home *** CD-ROM | disk | FTP | other *** search
/ Komputer for Alle 1999 #5 / 1999 CD 5 (black).iso / Delphi3 / install / data.z / ACTIVEX.PAS < prev    next >
Encoding:
Pascal/Delphi Source File  |  1997-08-04  |  172.2 KB  |  4,171 lines

  1. {*******************************************************}
  2. {                                                       }
  3. {       Delphi Runtime Library                          }
  4. {       ActiveX / OLE 2 Interface Unit                  }
  5. {                                                       }
  6. {       Copyright (c) 1997 Borland International        }
  7. {                                                       }
  8. {*******************************************************}
  9.  
  10. unit ActiveX;
  11.  
  12. { Do not WEAKPACKAGE this unit.
  13.   This unit requires startup code to initialize constants. }
  14.  
  15. interface
  16.  
  17. uses Windows, Messages;
  18.  
  19. const
  20. { from WTYPES.H }
  21.   MEMCTX_TASK      = 1;
  22.   MEMCTX_SHARED    = 2;
  23.   MEMCTX_MACSYSTEM = 3;
  24.   MEMCTX_UNKNOWN   = -1;
  25.   MEMCTX_SAME      = -2;
  26.  
  27.   ROTFLAGS_REGISTRATIONKEEPSALIVE = 1;
  28.   ROTFLAGS_ALLOWANYCLIENT         = 2;
  29.  
  30.   CLSCTX_INPROC_SERVER     = 1;
  31.   CLSCTX_INPROC_HANDLER    = 2;
  32.   CLSCTX_LOCAL_SERVER      = 4;
  33.   CLSCTX_INPROC_SERVER16   = 8;
  34.   CLSCTX_REMOTE_SERVER     = $10;
  35.   CLSCTX_INPROC_HANDLER16  = $20;
  36.   CLSCTX_INPROC_SERVERX86  = $40;
  37.   CLSCTX_INPROC_HANDLERX86 = $80;
  38.  
  39. { from OBJBASE }
  40.   CLSCTX_ALL    = CLSCTX_INPROC_SERVER or CLSCTX_INPROC_HANDLER or
  41.       CLSCTX_LOCAL_SERVER;
  42.   CLSCTX_INPROC = CLSCTX_INPROC_SERVER or CLSCTX_INPROC_HANDLER;
  43.   CLSCTX_SERVER = CLSCTX_INPROC_SERVER or CLSCTX_LOCAL_SERVER;
  44.  
  45.   COM_RIGHTS_EXECUTE = 1;
  46.  
  47. { from WTYPES.H }
  48.   MSHLFLAGS_NORMAL      = 0;
  49.   MSHLFLAGS_TABLESTRONG = 1;
  50.   MSHLFLAGS_TABLEWEAK   = 2;
  51.   MSHLFLAGS_NOPING      = 4;
  52.  
  53.   MSHCTX_LOCAL            = 0;
  54.   MSHCTX_NOSHAREDMEM      = 1;
  55.   MSHCTX_DIFFERENTMACHINE = 2;
  56.   MSHCTX_INPROC           = 3;
  57.  
  58.   DVASPECT_CONTENT   = 1;
  59.   DVASPECT_THUMBNAIL = 2;
  60.   DVASPECT_ICON      = 4;
  61.   DVASPECT_DOCPRINT  = 8;
  62.  
  63.   STGC_DEFAULT                            = 0;
  64.   STGC_OVERWRITE                          = 1;
  65.   STGC_ONLYIFCURRENT                      = 2;
  66.   STGC_DANGEROUSLYCOMMITMERELYTODISKCACHE = 4;
  67.  
  68.   STGMOVE_MOVE        = 0;
  69.   STGMOVE_COPY        = 1;
  70.   STGMOVE_SHALLOWCOPY = 2;
  71.  
  72.   STATFLAG_DEFAULT = 0;
  73.   STATFLAG_NONAME  = 1;
  74.  
  75. { from OBJIDL.H }
  76.   BIND_MAYBOTHERUSER     = 1;
  77.   BIND_JUSTTESTEXISTENCE = 2;
  78.  
  79.   MKSYS_NONE             = 0;
  80.   MKSYS_GENERICCOMPOSITE = 1;
  81.   MKSYS_FILEMONIKER      = 2;
  82.   MKSYS_ANTIMONIKER      = 3;
  83.   MKSYS_ITEMMONIKER      = 4;
  84.   MKSYS_POINTERMONIKER   = 5;
  85.  
  86.   MKRREDUCE_ONE         = 3 shl 16;
  87.   MKRREDUCE_TOUSER      = 2 shl 16;
  88.   MKRREDUCE_THROUGHUSER = 1 shl 16;
  89.   MKRREDUCE_ALL         = 0;
  90.  
  91.   STGTY_STORAGE   = 1;
  92.   STGTY_STREAM    = 2;
  93.   STGTY_LOCKBYTES = 3;
  94.   STGTY_PROPERTY  = 4;
  95.  
  96.   STREAM_SEEK_SET = 0;
  97.   STREAM_SEEK_CUR = 1;
  98.   STREAM_SEEK_END = 2;
  99.  
  100.   LOCK_WRITE     = 1;
  101.   LOCK_EXCLUSIVE = 2;
  102.   LOCK_ONLYONCE  = 4;
  103.  
  104.   ADVF_NODATA            = 1;
  105.   ADVF_PRIMEFIRST        = 2;
  106.   ADVF_ONLYONCE          = 4;
  107.   ADVF_DATAONSTOP        = 64;
  108.   ADVFCACHE_NOHANDLER    = 8;
  109.   ADVFCACHE_FORCEBUILTIN = 16;
  110.   ADVFCACHE_ONSAVE       = 32;
  111.  
  112.   TYMED_HGLOBAL  = 1;
  113.   TYMED_FILE     = 2;
  114.   TYMED_ISTREAM  = 4;
  115.   TYMED_ISTORAGE = 8;
  116.   TYMED_GDI      = 16;
  117.   TYMED_MFPICT   = 32;
  118.   TYMED_ENHMF    = 64;
  119.   TYMED_NULL     = 0;
  120.  
  121.   DATADIR_GET = 1;
  122.   DATADIR_SET = 2;
  123.  
  124.   CALLTYPE_TOPLEVEL             = 1;
  125.   CALLTYPE_NESTED               = 2;
  126.   CALLTYPE_ASYNC                = 3;
  127.   CALLTYPE_TOPLEVEL_CALLPENDING = 4;
  128.   CALLTYPE_ASYNC_CALLPENDING    = 5;
  129.  
  130.   SERVERCALL_ISHANDLED  = 0;
  131.   SERVERCALL_REJECTED   = 1;
  132.   SERVERCALL_RETRYLATER = 2;
  133.  
  134.   PENDINGTYPE_TOPLEVEL = 1;
  135.   PENDINGTYPE_NESTED   = 2;
  136.  
  137.   PENDINGMSG_CANCELCALL     = 0;
  138.   PENDINGMSG_WAITNOPROCESS  = 1;
  139.   PENDINGMSG_WAITDEFPROCESS = 2;
  140.  
  141. { from OBJBASE.H }
  142.   REGCLS_SINGLEUSE      = 0;
  143.   REGCLS_MULTIPLEUSE    = 1;
  144.   REGCLS_MULTI_SEPARATE = 2;
  145.   REGCLS_SUSPENDED      = 4;
  146.  
  147.   MARSHALINTERFACE_MIN = 500;
  148.  
  149.   CWCSTORAGENAME = 32;
  150.  
  151.   STGM_DIRECT           = $00000000;
  152.   STGM_TRANSACTED       = $00010000;
  153.   STGM_SIMPLE           = $08000000;
  154.  
  155.   STGM_READ             = $00000000;
  156.   STGM_WRITE            = $00000001;
  157.   STGM_READWRITE        = $00000002;
  158.  
  159.   STGM_SHARE_DENY_NONE  = $00000040;
  160.   STGM_SHARE_DENY_READ  = $00000030;
  161.   STGM_SHARE_DENY_WRITE = $00000020;
  162.   STGM_SHARE_EXCLUSIVE  = $00000010;
  163.  
  164.   STGM_PRIORITY         = $00040000;
  165.   STGM_DELETEONRELEASE  = $04000000;
  166.   STGM_NOSCRATCH        = $00100000;
  167.  
  168.   STGM_CREATE           = $00001000;
  169.   STGM_CONVERT          = $00020000;
  170.   STGM_FAILIFTHERE      = $00000000;
  171.  
  172.   FADF_AUTO      = $0001;  { array is allocated on the stack }
  173.   FADF_STATIC    = $0002;  { array is staticly allocated }
  174.   FADF_EMBEDDED  = $0004;  { array is embedded in a structure }
  175.   FADF_FIXEDSIZE = $0010;  { array may not be resized or reallocated }
  176.   FADF_BSTR      = $0100;  { an array of BSTRs }
  177.   FADF_UNKNOWN   = $0200;  { an array of IUnknown }
  178.   FADF_DISPATCH  = $0400;  { an array of IDispatch }
  179.   FADF_VARIANT   = $0800;  { an array of VARIANTs }
  180.   FADF_RESERVED  = $F0E8;  { bits reserved for future use }
  181.  
  182. { from WTYPES.H }  
  183. { VARENUM usage key,
  184.  
  185.     [V] - may appear in a VARIANT
  186.     [T] - may appear in a TYPEDESC
  187.     [P] - may appear in an OLE property set
  188.     [S] - may appear in a Safe Array }
  189.  
  190.   VT_EMPTY           = 0;   { [V]   [P]  nothing                     }
  191.   VT_NULL            = 1;   { [V]        SQL style Null              }
  192.   VT_I2              = 2;   { [V][T][P]  2 byte signed int           }
  193.   VT_I4              = 3;   { [V][T][P]  4 byte signed int           }
  194.   VT_R4              = 4;   { [V][T][P]  4 byte real                 }
  195.   VT_R8              = 5;   { [V][T][P]  8 byte real                 }
  196.   VT_CY              = 6;   { [V][T][P]  currency                    }
  197.   VT_DATE            = 7;   { [V][T][P]  date                        }
  198.   VT_BSTR            = 8;   { [V][T][P]  binary string               }
  199.   VT_DISPATCH        = 9;   { [V][T]     IDispatch FAR*              }
  200.   VT_ERROR           = 10;  { [V][T]     SCODE                       }
  201.   VT_BOOL            = 11;  { [V][T][P]  True=-1, False=0            }
  202.   VT_VARIANT         = 12;  { [V][T][P]  VARIANT FAR*                }
  203.   VT_UNKNOWN         = 13;  { [V][T]     IUnknown FAR*               }
  204.   VT_DECIMAL         = 14;  { [V][T]   [S]  16 byte fixed point      }
  205.  
  206.   VT_I1              = 16;  {    [T]     signed char                 }
  207.   VT_UI1             = 17;  {    [T]     unsigned char               }
  208.   VT_UI2             = 18;  {    [T]     unsigned short              }
  209.   VT_UI4             = 19;  {    [T]     unsigned short              }
  210.   VT_I8              = 20;  {    [T][P]  signed 64-bit int           }
  211.   VT_UI8             = 21;  {    [T]     unsigned 64-bit int         }
  212.   VT_INT             = 22;  {    [T]     signed machine int          }
  213.   VT_UINT            = 23;  {    [T]     unsigned machine int        }
  214.   VT_VOID            = 24;  {    [T]     C style void                }
  215.   VT_HRESULT         = 25;  {    [T]                                 }
  216.   VT_PTR             = 26;  {    [T]     pointer type                }
  217.   VT_SAFEARRAY       = 27;  {    [T]     (use VT_ARRAY in VARIANT)   }
  218.   VT_CARRAY          = 28;  {    [T]     C style array               }
  219.   VT_USERDEFINED     = 29;  {    [T]     user defined type          }
  220.   VT_LPSTR           = 30;  {    [T][P]  null terminated string      }
  221.   VT_LPWSTR          = 31;  {    [T][P]  wide null terminated string }
  222.  
  223.   VT_FILETIME        = 64;  {       [P]  FILETIME                    }
  224.   VT_BLOB            = 65;  {       [P]  Length prefixed bytes       }
  225.   VT_STREAM          = 66;  {       [P]  Name of the stream follows  }
  226.   VT_STORAGE         = 67;  {       [P]  Name of the storage follows }
  227.   VT_STREAMED_OBJECT = 68;  {       [P]  Stream contains an object   }
  228.   VT_STORED_OBJECT   = 69;  {       [P]  Storage contains an object  }
  229.   VT_BLOB_OBJECT     = 70;  {       [P]  Blob contains an object     }
  230.   VT_CF              = 71;  {       [P]  Clipboard format            }
  231.   VT_CLSID           = 72;  {       [P]  A Class ID                  }
  232.  
  233.   VT_VECTOR        = $1000; {       [P]  simple counted array        }
  234.   VT_ARRAY         = $2000; { [V]        SAFEARRAY*                  }
  235.   VT_BYREF         = $4000; { [V]                                    }
  236.   VT_RESERVED      = $8000;
  237.   VT_ILLEGAL       = $ffff;
  238.   VT_ILLEGALMASKED = $0fff;
  239.   VT_TYPEMASK      = $0fff;
  240.   
  241. { from OAIDL.H }
  242.   TKIND_ENUM      = 0;
  243.   TKIND_RECORD    = 1;
  244.   TKIND_MODULE    = 2;
  245.   TKIND_INTERFACE = 3;
  246.   TKIND_DISPATCH  = 4;
  247.   TKIND_COCLASS   = 5;
  248.   TKIND_ALIAS     = 6;
  249.   TKIND_UNION     = 7;
  250.   TKIND_MAX       = 8;
  251.  
  252.   CC_CDECL       = 1;
  253.   CC_PASCAL      = 2;
  254.   CC_MACPASCAL   = 3;
  255.   CC_STDCALL     = 4;
  256.   CC_FPFASTCALL  = 5;
  257.   CC_SYSCALL     = 6;
  258.   CC_MPWCDECL    = 7;
  259.   CC_MPWPASCAL   = 8;
  260.   CC_MAX         = 9;
  261.  
  262.   FUNC_VIRTUAL     = 0;
  263.   FUNC_PUREVIRTUAL = 1;
  264.   FUNC_NONVIRTUAL  = 2;
  265.   FUNC_STATIC      = 3;
  266.   FUNC_DISPATCH    = 4;
  267.  
  268.   INVOKE_FUNC           = 1;
  269.   INVOKE_PROPERTYGET    = 2;
  270.   INVOKE_PROPERTYPUT    = 4;
  271.   INVOKE_PROPERTYPUTREF = 8;
  272.  
  273.   VAR_PERINSTANCE = 0;
  274.   VAR_STATIC      = 1;
  275.   VAR_CONST       = 2;
  276.   VAR_DISPATCH    = 3;
  277.  
  278.   IMPLTYPEFLAG_FDEFAULT        = 1;
  279.   IMPLTYPEFLAG_FSOURCE         = 2;
  280.   IMPLTYPEFLAG_FRESTRICTED     = 4;
  281.   IMPLTYPEFLAG_FDEFAULTVTABLE    = 8;
  282.  
  283.   TYPEFLAG_FAPPOBJECT     = $0001;
  284.   TYPEFLAG_FCANCREATE     = $0002;
  285.   TYPEFLAG_FLICENSED      = $0004;
  286.   TYPEFLAG_FPREDECLID     = $0008;
  287.   TYPEFLAG_FHIDDEN        = $0010;
  288.   TYPEFLAG_FCONTROL       = $0020;
  289.   TYPEFLAG_FDUAL          = $0040;
  290.   TYPEFLAG_FNONEXTENSIBLE = $0080;
  291.   TYPEFLAG_FOLEAUTOMATION = $0100;
  292.   TYPEFLAG_FRESTRICTED    = $0200;
  293.   TYPEFLAG_FAGGREGATABLE  = $0400;
  294.   TYPEFLAG_FREPLACEABLE   = $0800;
  295.   TYPEFLAG_FDISPATCHABLE  = $1000;
  296.   TYPEFLAG_FREVERSEBIND   = $2000;
  297.  
  298.   FUNCFLAG_FRESTRICTED       = $0001;
  299.   FUNCFLAG_FSOURCE           = $0002;
  300.   FUNCFLAG_FBINDABLE         = $0004;
  301.   FUNCFLAG_FREQUESTEDIT      = $0008;
  302.   FUNCFLAG_FDISPLAYBIND      = $0010;
  303.   FUNCFLAG_FDEFAULTBIND      = $0020;
  304.   FUNCFLAG_FHIDDEN           = $0040;
  305.   FUNCFLAG_FUSESGETLASTERROR = $0080;
  306.   FUNCFLAG_FDEFAULTCOLLELEM  = $0100;
  307.   FUNCFLAG_FUIDEFAULT        = $0200;
  308.   FUNCFLAG_FNONBROWSABLE          = $0400;
  309.   FUNCFLAG_FREPLACEABLE      = $0800;
  310.   FUNCFLAG_FIMMEDIATEBIND         = $1000;
  311.  
  312.   VARFLAG_FREADONLY        = $0001;
  313.   VARFLAG_FSOURCE          = $0002;
  314.   VARFLAG_FBINDABLE        = $0004;
  315.   VARFLAG_FREQUESTEDIT     = $0008;
  316.   VARFLAG_FDISPLAYBIND     = $0010;
  317.   VARFLAG_FDEFAULTBIND     = $0020;
  318.   VARFLAG_FHIDDEN          = $0040;
  319.   VARFLAG_FRESTRICTED      = $0080;
  320.   VARFLAG_FDEFAULTCOLLELEM      = $0100;
  321.   VARFLAG_FUIDEFAULT          = $0200;
  322.   VARFLAG_FNONBROWSABLE    = $0400;
  323.   VARFLAG_FREPLACEABLE     = $0800;
  324.   VARFLAG_FIMMEDIATEBIND        = $1000;
  325.  
  326.   DISPID_VALUE       = 0;
  327.   DISPID_UNKNOWN     = -1;
  328.   DISPID_PROPERTYPUT = -3;
  329.   DISPID_NEWENUM     = -4;
  330.   DISPID_EVALUATE    = -5;
  331.   DISPID_CONSTRUCTOR = -6;
  332.   DISPID_DESTRUCTOR  = -7;
  333.   DISPID_COLLECT     = -8;
  334.  
  335.   DESCKIND_NONE = 0;
  336.   DESCKIND_FUNCDESC = 1;
  337.   DESCKIND_VARDESC = 2;
  338.   DESCKIND_TYPECOMP = 3;
  339.   DESCKIND_IMPLICITAPPOBJ = 4;
  340.   DESCKIND_MAX = 5;
  341.  
  342.   SYS_WIN16 = 0;
  343.   SYS_WIN32 = 1;
  344.   SYS_MAC   = 2;
  345.  
  346.   LIBFLAG_FRESTRICTED   = 1;
  347.   LIBFLAG_FCONTROL      = 2;
  348.   LIBFLAG_FHIDDEN       = 4;
  349.   LIBFLAG_FHASDISKIMAGE = 8;
  350.  
  351. { from OLEAUTO.H }
  352.   STDOLE_MAJORVERNUM = 1;
  353.   STDOLE_MINORVERNUM = 0;
  354.   STDOLE_LCID = 0;
  355.  
  356.   VARIANT_NOVALUEPROP = 1;
  357.  
  358.   VAR_TIMEVALUEONLY = 1;
  359.   VAR_DATEVALUEONLY = 2;
  360.  
  361.   MEMBERID_NIL = DISPID_UNKNOWN;
  362.   ID_DEFAULTINST = -2;
  363.  
  364.   DISPATCH_METHOD         = 1;
  365.   DISPATCH_PROPERTYGET    = 2;
  366.   DISPATCH_PROPERTYPUT    = 4;
  367.   DISPATCH_PROPERTYPUTREF = 8;
  368.  
  369. { from OAIDL.H }  
  370.   IDLFLAG_NONE    = 0;
  371.   IDLFLAG_FIN     = 1;
  372.   IDLFLAG_FOUT    = 2;
  373.   IDLFLAG_FLCID   = 4;
  374.   IDLFLAG_FRETVAL = 8;
  375.  
  376. { from OLE2.H }  
  377.   OLEIVERB_PRIMARY          = 0;
  378.   OLEIVERB_SHOW             = -1;
  379.   OLEIVERB_OPEN             = -2;
  380.   OLEIVERB_HIDE             = -3;
  381.   OLEIVERB_UIACTIVATE       = -4;
  382.   OLEIVERB_INPLACEACTIVATE  = -5;
  383.   OLEIVERB_DISCARDUNDOSTATE = -6;
  384.  
  385.   EMBDHLP_INPROC_HANDLER = $00000000;
  386.   EMBDHLP_INPROC_SERVER  = $00000001;
  387.   EMBDHLP_CREATENOW      = $00000000;
  388.   EMBDHLP_DELAYCREATE    = $00010000;
  389.  
  390.   OLECREATE_LEAVERUNNING = $00000001;
  391.   
  392. { from OLEIDL.H }  
  393.   UPDFCACHE_NODATACACHE = 1;
  394.   UPDFCACHE_ONSAVECACHE = 2;
  395.   UPDFCACHE_ONSTOPCACHE = 4;
  396.   UPDFCACHE_NORMALCACHE = 8;
  397.   UPDFCACHE_IFBLANK     = $10;
  398.   UPDFCACHE_ONLYIFBLANK = $80000000;
  399.  
  400.   UPDFCACHE_IFBLANKORONSAVECACHE = UPDFCACHE_IFBLANK or UPDFCACHE_ONSAVECACHE;
  401.   UPDFCACHE_ALL                  = not UPDFCACHE_ONLYIFBLANK;
  402.   UPDFCACHE_ALLBUTNODATACACHE    = UPDFCACHE_ALL and not UPDFCACHE_NODATACACHE;
  403.  
  404.   DISCARDCACHE_SAVEIFDIRTY = 0;
  405.   DISCARDCACHE_NOSAVE      = 1;
  406.  
  407.   OLEGETMONIKER_ONLYIFTHERE = 1;
  408.   OLEGETMONIKER_FORCEASSIGN = 2;
  409.   OLEGETMONIKER_UNASSIGN    = 3;
  410.   OLEGETMONIKER_TEMPFORUSER = 4;
  411.  
  412.   OLEWHICHMK_CONTAINER = 1;
  413.   OLEWHICHMK_OBJREL    = 2;
  414.   OLEWHICHMK_OBJFULL   = 3;
  415.  
  416.   USERCLASSTYPE_FULL    = 1;
  417.   USERCLASSTYPE_SHORT   = 2;
  418.   USERCLASSTYPE_APPNAME = 3;
  419.  
  420.   OLEMISC_RECOMPOSEONRESIZE            = 1;
  421.   OLEMISC_ONLYICONIC                   = 2;
  422.   OLEMISC_INSERTNOTREPLACE             = 4;
  423.   OLEMISC_STATIC                       = 8;
  424.   OLEMISC_CANTLINKINSIDE                    = $10;
  425.   OLEMISC_CANLINKBYOLE1                = $20;
  426.   OLEMISC_ISLINKOBJECT                 = $40;
  427.   OLEMISC_INSIDEOUT                       = $80;
  428.   OLEMISC_ACTIVATEWHENVISIBLE            = $100;
  429.   OLEMISC_RENDERINGISDEVICEINDEPENDENT  = $200;
  430.   OLEMISC_INVISIBLEATRUNTIME             = $400;
  431.   OLEMISC_ALWAYSRUN                       = $800;
  432.   OLEMISC_ACTSLIKEBUTTON                    = $1000;
  433.   OLEMISC_ACTSLIKELABEL                = $2000;
  434.   OLEMISC_NOUIACTIVATE                 = $4000;
  435.   OLEMISC_ALIGNABLE                       = $8000;
  436.   OLEMISC_SIMPLEFRAME                  = $10000;
  437.   OLEMISC_SETCLIENTSITEFIRST           = $20000;
  438.   OLEMISC_IMEMODE                            = $40000;
  439.   OLEMISC_IGNOREACTIVATEWHENVISIBLE    = $80000;
  440.   OLEMISC_WANTSTOMENUMERGE             = $100000;
  441.   OLEMISC_SUPPORTSMULTILEVELUNDO              = $200000;
  442.  
  443.   OLECLOSE_SAVEIFDIRTY = 0;
  444.   OLECLOSE_NOSAVE      = 1;
  445.   OLECLOSE_PROMPTSAVE  = 2;
  446.  
  447.   OLERENDER_NONE   = 0;
  448.   OLERENDER_DRAW   = 1;
  449.   OLERENDER_FORMAT = 2;
  450.   OLERENDER_ASIS   = 3;
  451.  
  452.   OLEUPDATE_ALWAYS = 1;
  453.   OLEUPDATE_ONCALL = 3;
  454.  
  455.   OLELINKBIND_EVENIFCLASSDIFF = 1;
  456.  
  457.   BINDSPEED_INDEFINITE = 1;
  458.   BINDSPEED_MODERATE   = 2;
  459.   BINDSPEED_IMMEDIATE  = 3;
  460.  
  461.   OLECONTF_EMBEDDINGS    = 1;
  462.   OLECONTF_LINKS         = 2;
  463.   OLECONTF_OTHERS        = 4;
  464.   OLECONTF_ONLYUSER      = 8;
  465.   OLECONTF_ONLYIFRUNNING = 16;
  466.  
  467.   DROPEFFECT_NONE   = 0;
  468.   DROPEFFECT_COPY   = 1;
  469.   DROPEFFECT_MOVE   = 2;
  470.   DROPEFFECT_LINK   = 4;
  471.   DROPEFFECT_SCROLL = $80000000;
  472.  
  473.   DD_DEFSCROLLINSET    = 11;
  474.   DD_DEFSCROLLDELAY    = 50;
  475.   DD_DEFSCROLLINTERVAL = 50;
  476.   DD_DEFDRAGDELAY      = 200;
  477.   DD_DEFDRAGMINDIST    = 2;
  478.  
  479.   OLEVERBATTRIB_NEVERDIRTIES    = 1;
  480.   OLEVERBATTRIB_ONCONTAINERMENU = 2;
  481.  
  482. { from OLECTL.H}  
  483. { OLE control status codes }
  484.  
  485.   CTL_E_ILLEGALFUNCTIONCALL       = $800A0000 + 5;
  486.   CTL_E_OVERFLOW                  = $800A0000 + 6;
  487.   CTL_E_OUTOFMEMORY               = $800A0000 + 7;
  488.   CTL_E_DIVISIONBYZERO            = $800A0000 + 11;
  489.   CTL_E_OUTOFSTRINGSPACE          = $800A0000 + 14;
  490.   CTL_E_OUTOFSTACKSPACE           = $800A0000 + 28;
  491.   CTL_E_BADFILENAMEORNUMBER       = $800A0000 + 52;
  492.   CTL_E_FILENOTFOUND              = $800A0000 + 53;
  493.   CTL_E_BADFILEMODE               = $800A0000 + 54;
  494.   CTL_E_FILEALREADYOPEN           = $800A0000 + 55;
  495.   CTL_E_DEVICEIOERROR             = $800A0000 + 57;
  496.   CTL_E_FILEALREADYEXISTS         = $800A0000 + 58;
  497.   CTL_E_BADRECORDLENGTH           = $800A0000 + 59;
  498.   CTL_E_DISKFULL                  = $800A0000 + 61;
  499.   CTL_E_BADRECORDNUMBER           = $800A0000 + 63;
  500.   CTL_E_BADFILENAME               = $800A0000 + 64;
  501.   CTL_E_TOOMANYFILES              = $800A0000 + 67;
  502.   CTL_E_DEVICEUNAVAILABLE         = $800A0000 + 68;
  503.   CTL_E_PERMISSIONDENIED          = $800A0000 + 70;
  504.   CTL_E_DISKNOTREADY              = $800A0000 + 71;
  505.   CTL_E_PATHFILEACCESSERROR       = $800A0000 + 75;
  506.   CTL_E_PATHNOTFOUND              = $800A0000 + 76;
  507.   CTL_E_INVALIDPATTERNSTRING      = $800A0000 + 93;
  508.   CTL_E_INVALIDUSEOFNULL          = $800A0000 + 94;
  509.   CTL_E_INVALIDFILEFORMAT         = $800A0000 + 321;
  510.   CTL_E_INVALIDPROPERTYVALUE      = $800A0000 + 380;
  511.   CTL_E_INVALIDPROPERTYARRAYINDEX = $800A0000 + 381;
  512.   CTL_E_SETNOTSUPPORTEDATRUNTIME  = $800A0000 + 382;
  513.   CTL_E_SETNOTSUPPORTED           = $800A0000 + 383;
  514.   CTL_E_NEEDPROPERTYARRAYINDEX    = $800A0000 + 385;
  515.   CTL_E_SETNOTPERMITTED           = $800A0000 + 387;
  516.   CTL_E_GETNOTSUPPORTEDATRUNTIME  = $800A0000 + 393;
  517.   CTL_E_GETNOTSUPPORTED           = $800A0000 + 394;
  518.   CTL_E_PROPERTYNOTFOUND          = $800A0000 + 422;
  519.   CTL_E_INVALIDCLIPBOARDFORMAT    = $800A0000 + 460;
  520.   CTL_E_INVALIDPICTURE            = $800A0000 + 481;
  521.   CTL_E_PRINTERERROR              = $800A0000 + 482;
  522.   CTL_E_CANTSAVEFILETOTEMP        = $800A0000 + 735;
  523.   CTL_E_SEARCHTEXTNOTFOUND        = $800A0000 + 744;
  524.   CTL_E_REPLACEMENTSTOOLONG       = $800A0000 + 746;
  525.  
  526.   CTL_E_CUSTOM_FIRST = $800A0000 + 600;
  527.  
  528. { IClassFactory2 status codes }
  529.  
  530.   CLASS_E_NOTLICENSED = CLASSFACTORY_E_FIRST + 2;
  531.  
  532. { IConnectionPoint status codes }
  533.  
  534.   CONNECT_E_FIRST = $80040200;
  535.   CONNECT_E_LAST  = $8004020F;
  536.   CONNECT_S_FIRST = $00040200;
  537.   CONNECT_S_LAST  = $0004020F;
  538.  
  539.   CONNECT_E_NOCONNECTION  = CONNECT_E_FIRST + 0;
  540.   CONNECT_E_ADVISELIMIT   = CONNECT_E_FIRST + 1;
  541.   CONNECT_E_CANNOTCONNECT = CONNECT_E_FIRST + 2;
  542.   CONNECT_E_OVERRIDDEN    = CONNECT_E_FIRST + 3;
  543.  
  544. { DllRegisterServer/DllUnregisterServer status codes }
  545.  
  546.   SELFREG_E_FIRST = $80040200;
  547.   SELFREG_E_LAST  = $80040200;
  548.   SELFREG_S_FIRST = $00040200;
  549.   SELFREG_S_LAST  = $00040200;
  550.  
  551.   SELFREG_E_TYPELIB = SELFREG_E_FIRST + 0;
  552.   SELFREG_E_CLASS   = SELFREG_E_FIRST + 1;
  553.  
  554. { IPerPropertyBrowsing status codes }
  555.  
  556.   PERPROP_E_FIRST = $80040200;
  557.   PERPROP_E_LAST  = $8004020F;
  558.   PERPROP_S_FIRST = $00040200;
  559.   PERPROP_S_LAST  = $0004020F;
  560.  
  561.   PERPROP_E_NOPAGEAVAILABLE = PERPROP_E_FIRST + 0;
  562.  
  563. { Additional OLEIVERB constants }
  564.  
  565.   OLEIVERB_PROPERTIES = -7;
  566.  
  567. { Additional variant type tags for property sets }
  568.  
  569.   VT_STREAMED_PROPSET = 73;  { Stream contains a property set }
  570.   VT_STORED_PROPSET   = 74;  { Storage contains a property set }
  571.   VT_BLOB_PROPSET     = 75;  { Blob contains a property set }
  572.   VT_VERBOSE_ENUM     = 76;  { Enum value with text string }
  573.  
  574. { Variant type tags that are just aliases for others }
  575.  
  576.   VT_COLOR          = VT_I4;
  577.   VT_XPOS_PIXELS    = VT_I4;
  578.   VT_YPOS_PIXELS    = VT_I4;
  579.   VT_XSIZE_PIXELS   = VT_I4;
  580.   VT_YSIZE_PIXELS   = VT_I4;
  581.   VT_XPOS_HIMETRIC  = VT_I4;
  582.   VT_YPOS_HIMETRIC  = VT_I4;
  583.   VT_XSIZE_HIMETRIC = VT_I4;
  584.   VT_YSIZE_HIMETRIC = VT_I4;
  585.   VT_TRISTATE       = VT_I2;
  586.   VT_OPTEXCLUSIVE   = VT_BOOL;
  587.   VT_FONT           = VT_DISPATCH;
  588.   VT_PICTURE        = VT_DISPATCH;
  589.   VT_HANDLE         = VT_I4;
  590.  
  591. { Reflected window message IDs }
  592.  
  593.   OCM__BASE = WM_USER + $1C00;
  594.  
  595.   OCM_COMMAND           = OCM__BASE + WM_COMMAND;
  596.   OCM_CTLCOLORBTN       = OCM__BASE + WM_CTLCOLORBTN;
  597.   OCM_CTLCOLOREDIT      = OCM__BASE + WM_CTLCOLOREDIT;
  598.   OCM_CTLCOLORDLG       = OCM__BASE + WM_CTLCOLORDLG;
  599.   OCM_CTLCOLORLISTBOX   = OCM__BASE + WM_CTLCOLORLISTBOX;
  600.   OCM_CTLCOLORMSGBOX    = OCM__BASE + WM_CTLCOLORMSGBOX;
  601.   OCM_CTLCOLORSCROLLBAR = OCM__BASE + WM_CTLCOLORSCROLLBAR;
  602.   OCM_CTLCOLORSTATIC    = OCM__BASE + WM_CTLCOLORSTATIC;
  603.   OCM_DRAWITEM          = OCM__BASE + WM_DRAWITEM;
  604.   OCM_MEASUREITEM       = OCM__BASE + WM_MEASUREITEM;
  605.   OCM_DELETEITEM        = OCM__BASE + WM_DELETEITEM;
  606.   OCM_VKEYTOITEM        = OCM__BASE + WM_VKEYTOITEM;
  607.   OCM_CHARTOITEM        = OCM__BASE + WM_CHARTOITEM;
  608.   OCM_COMPAREITEM       = OCM__BASE + WM_COMPAREITEM;
  609.   OCM_HSCROLL           = OCM__BASE + WM_HSCROLL;
  610.   OCM_VSCROLL           = OCM__BASE + WM_VSCROLL;
  611.   OCM_PARENTNOTIFY      = OCM__BASE + WM_PARENTNOTIFY;
  612.   OCM_NOTIFY            = OCM__BASE + WM_NOTIFY;
  613.  
  614. { from OCIDL.H }
  615. { TControlInfo.dwFlags masks }
  616.  
  617.   CTRLINFO_EATS_RETURN = 1;  { Control doesn't send Return to container }
  618.   CTRLINFO_EATS_ESCAPE = 2;  { Control doesn't send Escape to container }
  619.  
  620. { IOleControlSite.TransformCoords flags }
  621.  
  622.   XFORMCOORDS_POSITION            = 1;
  623.   XFORMCOORDS_SIZE                = 2;
  624.   XFORMCOORDS_HIMETRICTOCONTAINER = 4;
  625.   XFORMCOORDS_CONTAINERTOHIMETRIC = 8;
  626.  
  627. { IPropertyPageSite.OnStatusChange flags }
  628.  
  629.   PROPPAGESTATUS_DIRTY    = 1;  { Values in page have changed }
  630.   PROPPAGESTATUS_VALIDATE = 2;  { Appropriate time to validate/apply }
  631.   PROPPAGESTATUS_CLEAN    = 4;
  632.  
  633. { Picture attributes }
  634.  
  635.   PICTURE_SCALABLE    = 1;
  636.   PICTURE_TRANSPARENT = 2;
  637.  
  638. { from OLECTL.H }  
  639. { TPictDesc.picType values }
  640.  
  641.   PICTYPE_UNINITIALIZED = -1;
  642.   PICTYPE_NONE          = 0;
  643.   PICTYPE_BITMAP        = 1;
  644.   PICTYPE_METAFILE      = 2;
  645.   PICTYPE_ICON          = 3;
  646.   PICTYPE_ENHMETAFILE   = 4;
  647.  
  648. { Standard dispatch ID constants }
  649.  
  650.   DISPID_AUTOSIZE      = -500;
  651.   DISPID_BACKCOLOR     = -501;
  652.   DISPID_BACKSTYLE     = -502;
  653.   DISPID_BORDERCOLOR   = -503;
  654.   DISPID_BORDERSTYLE   = -504;
  655.   DISPID_BORDERWIDTH   = -505;
  656.   DISPID_DRAWMODE      = -507;
  657.   DISPID_DRAWSTYLE     = -508;
  658.   DISPID_DRAWWIDTH     = -509;
  659.   DISPID_FILLCOLOR     = -510;
  660.   DISPID_FILLSTYLE     = -511;
  661.   DISPID_FONT          = -512;
  662.   DISPID_FORECOLOR     = -513;
  663.   DISPID_ENABLED       = -514;
  664.   DISPID_HWND          = -515;
  665.   DISPID_TABSTOP       = -516;
  666.   DISPID_TEXT          = -517;
  667.   DISPID_CAPTION       = -518;
  668.   DISPID_BORDERVISIBLE = -519;
  669.   DISPID_APPEARANCE    = -520;
  670.   DISPID_MOUSEPOINTER  = -521;
  671.   DISPID_MOUSEICON     = -522;
  672.   DISPID_PICTURE       = -523;
  673.   DISPID_VALID         = -524;
  674.   DISPID_READYSTATE    = -525;
  675.  
  676.   DISPID_REFRESH  = -550;
  677.   DISPID_DOCLICK  = -551;
  678.   DISPID_ABOUTBOX = -552;
  679.  
  680.   DISPID_CLICK            = -600;
  681.   DISPID_DBLCLICK         = -601;
  682.   DISPID_KEYDOWN          = -602;
  683.   DISPID_KEYPRESS         = -603;
  684.   DISPID_KEYUP            = -604;
  685.   DISPID_MOUSEDOWN        = -605;
  686.   DISPID_MOUSEMOVE        = -606;
  687.   DISPID_MOUSEUP          = -607;
  688.   DISPID_ERROREVENT       = -608;
  689.   DISPID_READYSTATECHANGE = -609;
  690.  
  691.   DISPID_AMBIENT_BACKCOLOR         = -701;
  692.   DISPID_AMBIENT_DISPLAYNAME       = -702;
  693.   DISPID_AMBIENT_FONT              = -703;
  694.   DISPID_AMBIENT_FORECOLOR         = -704;
  695.   DISPID_AMBIENT_LOCALEID          = -705;
  696.   DISPID_AMBIENT_MESSAGEREFLECT    = -706;
  697.   DISPID_AMBIENT_SCALEUNITS        = -707;
  698.   DISPID_AMBIENT_TEXTALIGN         = -708;
  699.   DISPID_AMBIENT_USERMODE          = -709;
  700.   DISPID_AMBIENT_UIDEAD            = -710;
  701.   DISPID_AMBIENT_SHOWGRABHANDLES   = -711;
  702.   DISPID_AMBIENT_SHOWHATCHING      = -712;
  703.   DISPID_AMBIENT_DISPLAYASDEFAULT  = -713;
  704.   DISPID_AMBIENT_SUPPORTSMNEMONICS = -714;
  705.   DISPID_AMBIENT_AUTOCLIP          = -715;
  706.   DISPID_AMBIENT_APPEARANCE        = -716;
  707.   
  708.   DISPID_AMBIENT_PALETTE           = -726;
  709.   DISPID_AMBIENT_TRANSFERPRIORITY  = -728;
  710.   
  711.   DISPID_Name                      = -800;
  712.   DISPID_Delete                    = -801;
  713.   DISPID_Object                    = -802;
  714.   DISPID_Parent                    = -803;
  715.  
  716.  
  717. { Dispatch ID constants for fonts }
  718.  
  719.   DISPID_FONT_NAME    = 0;
  720.   DISPID_FONT_SIZE    = 2;
  721.   DISPID_FONT_BOLD    = 3;
  722.   DISPID_FONT_ITALIC  = 4;
  723.   DISPID_FONT_UNDER   = 5;
  724.   DISPID_FONT_STRIKE  = 6;
  725.   DISPID_FONT_WEIGHT  = 7;
  726.   DISPID_FONT_CHARSET = 8;
  727.  
  728. { Dispatch ID constants for pictures }
  729.  
  730.   DISPID_PICT_HANDLE = 0;
  731.   DISPID_PICT_HPAL   = 2;
  732.   DISPID_PICT_TYPE   = 3;
  733.   DISPID_PICT_WIDTH  = 4;
  734.   DISPID_PICT_HEIGHT = 5;
  735.   DISPID_PICT_RENDER = 6;
  736.  
  737. type
  738. { from WTYPES.H }
  739. { Result code }
  740.  
  741.   PHResult = ^HResult;
  742.   HResult = Integer;
  743.   PSCODE = ^Integer;
  744.   SCODE = Integer;
  745.  
  746. { VT_INT and VT_UINT }
  747.   PSYSINT = ^SYSINT;
  748.   SYSINT = Integer;
  749.   PSYSUINT = ^SYSUINT;
  750.   SYSUINT = Integer;
  751.  
  752.   PResultList = ^TResultList;
  753.   TResultList = array[0..65535] of HResult;
  754.  
  755. { Unknown lists }
  756.   PUnknownList = ^TUnknownList;
  757.   TUnknownList = array[0..65535] of IUnknown;
  758.  
  759. { OLE character and string types }
  760.  
  761.   TOleChar = WideChar;
  762.   POleStr = PWideChar;
  763.  
  764.   POleStrList = ^TOleStrList;
  765.   TOleStrList = array[0..65535] of POleStr;
  766.  
  767. { 64-bit large integer }
  768.  
  769.   Largeint = Comp;
  770.  
  771. { 64-bit large unsigned integer }
  772.  
  773.   PLargeuint = ^Largeuint;
  774.   Largeuint = Comp;
  775.  
  776. { Interface ID }
  777.  
  778.   PIID = PGUID;
  779.   TIID = TGUID;
  780.  
  781. { Class ID }
  782.  
  783.   PCLSID = PGUID;
  784.   TCLSID = TGUID;
  785.  
  786. { Object ID }
  787.  
  788.   PObjectID = ^TObjectID;
  789.   TObjectID = record
  790.     Lineage: TGUID;
  791.     Uniquifier: Longint;
  792.   end;
  793.  
  794. { Locale ID }
  795.  
  796.   TLCID = Longint;
  797.  
  798. { OLE control types }
  799.  
  800.   PTextMetricOle = PTextMetricW;
  801.   TTextMetricOle = TTextMetricW;
  802.  
  803.   TOleColor = Longint;
  804.  
  805.   PCoServerInfo = ^TCoServerInfo;
  806.   TCoServerInfo = record
  807.     dwReserved1: Longint;
  808.     pwszName: LPWSTR;
  809.     pAuthInfo: Pointer;
  810.     dwReserved2: Longint;
  811.   end;
  812.  
  813.   PMultiQI = ^TMultiQI;
  814.   TMultiQI = record
  815.     IID: PIID;
  816.     Itf: IUnknown;
  817.     hr: HRESULT;
  818.   end;
  819.  
  820.   PMultiQIArray = ^TMultiQIArray;
  821.   TMultiQIArray = array[0..65535] of TMultiQI;
  822.  
  823. { from OLECTL.H }
  824.   OLE_XPOS_PIXELS  = Longint;
  825.   OLE_YPOS_PIXELS  = Longint;
  826.   OLE_XSIZE_PIXELS = Longint;
  827.   OLE_YSIZE_PIXELS = Longint;
  828.  
  829.   OLE_XPOS_HIMETRIC  = Longint;
  830.   OLE_YPOS_HIMETRIC  = Longint;
  831.   OLE_XSIZE_HIMETRIC = Longint;
  832.   OLE_YSIZE_HIMETRIC = Longint;
  833.  
  834.   OLE_XPOS_CONTAINER  = Single;
  835.   OLE_YPOS_CONTAINER  = Single;
  836.   OLE_XSIZE_CONTAINER = Single;
  837.   OLE_YSIZE_CONTAINER = Single;
  838.  
  839.   OLE_TRISTATE = (triUnchecked, triChecked, triGray);
  840.  
  841.   OLE_OPTEXCLUSIVE = WordBool;
  842.  
  843.   OLE_CANCELBOOL = WordBool;
  844.  
  845.   OLE_ENABLEDEFAULTBOOL = WordBool;
  846.  
  847.   OLE_HANDLE = Longint;
  848.  
  849.   FONTNAME = WideString;
  850.  
  851.   FONTSIZE = Currency;
  852.  
  853.   FONTBOLD = WordBool;
  854.  
  855.   FONTITALIC = WordBool;
  856.  
  857.   FONTUNDERSCORE = WordBool;
  858.  
  859.   FONTSTRIKETHROUGH = WordBool;
  860.  
  861.  
  862. { Registration function types }
  863.  
  864.   TDLLRegisterServer = function: HResult stdcall;
  865.   TDLLUnregisterServer = function: HResult stdcall;
  866.  
  867. { from OCIDL.H }
  868. { TPointF structure }
  869.  
  870.   PPointF = ^TPointF;
  871.   TPointF = record
  872.     x: Single;
  873.     y: Single;
  874.   end;
  875.  
  876. { TControlInfo structure }
  877.  
  878.   PControlInfo = ^TControlInfo;
  879.   TControlInfo = record
  880.     cb: Longint;
  881.     hAccel: HAccel;
  882.     cAccel: Word;
  883.     dwFlags: Longint;
  884.   end;
  885.  
  886. { from OBJIDL.H }
  887. { Forward declarations }
  888.  
  889.   IStream = interface;
  890.   IRunningObjectTable = interface;
  891.   IEnumString = interface;
  892.   IMoniker = interface;
  893.   IAdviseSink = interface;
  894.   ITypeInfo = interface;
  895.   ITypeComp = interface;
  896.   ITypeLib = interface;
  897.   IEnumOleVerb = interface;
  898.   IOleInPlaceActiveObject = interface;
  899.   IOleControl = interface;
  900.   IOleControlSite = interface;
  901.   ISimpleFrameSite = interface;
  902.   IPersistStreamInit = interface;
  903.   IPersistPropertyBag = interface;
  904.   IPropertyNotifySink = interface;
  905.   IProvideClassInfo = interface;
  906.   IConnectionPointContainer = interface;
  907.   IEnumConnectionPoints = interface;
  908.   IConnectionPoint = interface;
  909.   IEnumConnections = interface;
  910.   IClassFactory2 = interface;
  911.   ISpecifyPropertyPages = interface;
  912.   IPerPropertyBrowsing = interface;
  913.   IPropertyPageSite = interface;
  914.   IPropertyPage = interface;
  915.   IPropertyPage2 = interface;
  916.  
  917. { IClassFactory interface }
  918.  
  919.   IClassFactory = interface(IUnknown)
  920.     ['{00000001-0000-0000-C000-000000000046}']
  921.     function CreateInstance(const unkOuter: IUnknown; const iid: TIID;
  922.       out obj): HResult; stdcall;
  923.     function LockServer(fLock: BOOL): HResult; stdcall;
  924.   end;
  925.  
  926. { IMarshal interface }
  927.  
  928.   IMarshal = interface(IUnknown)
  929.     ['{00000003-0000-0000-C000-000000000046}']
  930.     function GetUnmarshalClass(const iid: TIID; pv: Pointer;
  931.       dwDestContext: Longint; pvDestContext: Pointer; mshlflags: Longint;
  932.       out cid: TCLSID): HResult; stdcall;
  933.     function GetMarshalSizeMax(const iid: TIID; pv: Pointer;
  934.       dwDestContext: Longint; pvDestContext: Pointer; mshlflags: Longint;
  935.       out size: Longint): HResult; stdcall;
  936.     function MarshalInterface(const stm: IStream; const iid: TIID; pv: Pointer;
  937.       dwDestContext: Longint; pvDestContext: Pointer;
  938.       mshlflags: Longint): HResult; stdcall;
  939.     function UnmarshalInterface(const stm: IStream; const iid: TIID;
  940.       out pv): HResult; stdcall;
  941.     function ReleaseMarshalData(const stm: IStream): HResult;
  942.       stdcall;
  943.     function DisconnectObject(dwReserved: Longint): HResult;
  944.       stdcall;
  945.   end;
  946.  
  947. { IMalloc interface }
  948.  
  949.   IMalloc = interface(IUnknown)
  950.     ['{00000002-0000-0000-C000-000000000046}']
  951.     function Alloc(cb: Longint): Pointer; stdcall;
  952.     function Realloc(pv: Pointer; cb: Longint): Pointer; stdcall;
  953.     procedure Free(pv: Pointer); stdcall;
  954.     function GetSize(pv: Pointer): Longint; stdcall;
  955.     function DidAlloc(pv: Pointer): Integer; stdcall;
  956.     procedure HeapMinimize; stdcall;
  957.   end;
  958.  
  959. { IMallocSpy interface }
  960.  
  961.   IMallocSpy = interface(IUnknown)
  962.     ['{0000001D-0000-0000-C000-000000000046}']
  963.     function PreAlloc(cbRequest: Longint): Longint; stdcall;
  964.     function PostAlloc(pActual: Pointer): Pointer; stdcall;
  965.     function PreFree(pRequest: Pointer; fSpyed: BOOL): Pointer; stdcall;
  966.     procedure PostFree(fSpyed: BOOL); stdcall;
  967.     function PreRealloc(pRequest: Pointer; cbRequest: Longint;
  968.       out ppNewRequest: Pointer; fSpyed: BOOL): Longint; stdcall;
  969.     function PostRealloc(pActual: Pointer; fSpyed: BOOL): Pointer; stdcall;
  970.     function PreGetSize(pRequest: Pointer; fSpyed: BOOL): Pointer; stdcall;
  971.     function PostGetSize(pActual: Pointer; fSpyed: BOOL): Longint; stdcall;
  972.     function PostDidAlloc(pRequest: Pointer; fSpyed: BOOL; fActual: Integer): Integer; stdcall;
  973.     procedure PreHeapMinimize; stdcall;
  974.     procedure PostHeapMinimize; stdcall;
  975.   end;
  976.  
  977. { IStdMarshalInfo interface }
  978.  
  979.   IStdMarshalInfo = interface(IUnknown)
  980.     ['{00000018-0000-0000-C000-000000000046}']
  981.     function GetClassForHandler(dwDestContext: Longint; pvDestContext: Pointer;
  982.       out clsid: TCLSID): HResult; stdcall;
  983.   end;
  984.  
  985. { IExternalConnection interface }
  986.  
  987.   IExternalConnection = interface(IUnknown)
  988.     ['{00000019-0000-0000-C000-000000000046}']
  989.     function AddConnection(extconn: Longint; reserved: Longint): Longint;
  990.       stdcall;
  991.     function ReleaseConnection(extconn: Longint; reserved: Longint;
  992.       fLastReleaseCloses: BOOL): Longint; stdcall;
  993.   end;
  994.  
  995. { IWeakRef interface }
  996.  
  997.   IWeakRef = interface(IUnknown)
  998.     ['{A35E20C2-837D-11D0-9E9F-00A02457621F}']
  999.     function ChangeWeakCount(delta: Longint): Longint; stdcall;
  1000.     function ReleaseKeepAlive(const unkReleased: IUnknown;
  1001.       reserved: Longint): Longint; stdcall;
  1002.   end;
  1003.  
  1004. { IEnumUnknown interface }
  1005.  
  1006.   IEnumUnknown = interface(IUnknown)
  1007.     ['{00000100-0000-0000-C000-000000000046}']
  1008.     function Next(celt: Longint; out elt;
  1009.       pceltFetched: PLongint): HResult; stdcall;
  1010.     function Skip(celt: Longint): HResult; stdcall;
  1011.     function Reset: HResult; stdcall;
  1012.     function Clone(out enm: IEnumUnknown): HResult; stdcall;
  1013.   end;
  1014.  
  1015. { IBindCtx interface }
  1016.  
  1017.   PBindOpts = ^TBindOpts;
  1018.   TBindOpts = record
  1019.     cbStruct: Longint;
  1020.     grfFlags: Longint;
  1021.     grfMode: Longint;
  1022.     dwTickCountDeadline: Longint;
  1023.   end;
  1024.  
  1025.   IBindCtx = interface(IUnknown)
  1026.     ['{0000000E-0000-0000-C000-000000000046}']
  1027.     function RegisterObjectBound(const unk: IUnknown): HResult; stdcall;
  1028.     function RevokeObjectBound(const unk: IUnknown): HResult; stdcall;
  1029.     function ReleaseBoundObjects: HResult; stdcall;
  1030.     function SetBindOptions(const bindopts: TBindOpts): HResult; stdcall;
  1031.     function GetBindOptions(var bindopts: TBindOpts): HResult; stdcall;
  1032.     function GetRunningObjectTable(out rot: IRunningObjectTable): HResult;
  1033.       stdcall;
  1034.     function RegisterObjectParam(pszKey: POleStr; const unk: IUnknown): HResult;
  1035.       stdcall;
  1036.     function GetObjectParam(pszKey: POleStr; out unk: IUnknown): HResult;
  1037.       stdcall;
  1038.     function EnumObjectParam(out enum: IEnumString): HResult; stdcall;
  1039.     function RevokeObjectParam(pszKey: POleStr): HResult; stdcall;
  1040.   end;
  1041.  
  1042. { IEnumMoniker interface }
  1043.  
  1044.   IEnumMoniker = interface(IUnknown)
  1045.     ['{00000102-0000-0000-C000-000000000046}']
  1046.     function Next(celt: Longint; out elt;
  1047.       pceltFetched: PLongint): HResult; stdcall;
  1048.     function Skip(celt: Longint): HResult; stdcall;
  1049.     function Reset: HResult; stdcall;
  1050.     function Clone(out enm: IEnumMoniker): HResult; stdcall;
  1051.   end;
  1052.  
  1053. { IRunnableObject interface }
  1054.  
  1055.   IRunnableObject = interface(IUnknown)
  1056.     ['{00000126-0000-0000-C000-000000000046}']
  1057.     function GetRunningClass(out clsid: TCLSID): HResult; stdcall;
  1058.     function Run(const bc: IBindCtx): HResult; stdcall;
  1059.     function IsRunning: BOOL; stdcall;
  1060.     function LockRunning(fLock: BOOL; fLastUnlockCloses: BOOL): HResult;
  1061.       stdcall;
  1062.     function SetContainedObject(fContained: BOOL): HResult; stdcall;
  1063.   end;
  1064.  
  1065. { IRunningObjectTable interface }
  1066.  
  1067.   IRunningObjectTable = interface(IUnknown)
  1068.     ['{00000010-0000-0000-C000-000000000046}']
  1069.     function Register(grfFlags: Longint; const unkObject: IUnknown;
  1070.       const mkObjectName: IMoniker; out dwRegister: Longint): HResult; stdcall;
  1071.     function Revoke(dwRegister: Longint): HResult; stdcall;
  1072.     function IsRunning(const mkObjectName: IMoniker): HResult; stdcall;
  1073.     function GetObject(const mkObjectName: IMoniker;
  1074.       out unkObject: IUnknown): HResult; stdcall;
  1075.     function NoteChangeTime(dwRegister: Longint;
  1076.       const filetime: TFileTime): HResult; stdcall;
  1077.     function GetTimeOfLastChange(const mkObjectName: IMoniker;
  1078.       out filetime: TFileTime): HResult; stdcall;
  1079.     function EnumRunning(out enumMoniker: IEnumMoniker): HResult; stdcall;
  1080.   end;
  1081.  
  1082. { IPersist interface }
  1083.  
  1084.   IPersist = interface(IUnknown)
  1085.     ['{0000010C-0000-0000-C000-000000000046}']
  1086.     function GetClassID(out classID: TCLSID): HResult; stdcall;
  1087.   end;
  1088.  
  1089. { IPersistStream interface }
  1090.  
  1091.   IPersistStream = interface(IPersist)
  1092.     ['{00000109-0000-0000-C000-000000000046}']
  1093.     function IsDirty: HResult; stdcall;
  1094.     function Load(const stm: IStream): HResult; stdcall;
  1095.     function Save(const stm: IStream; fClearDirty: BOOL): HResult; stdcall;
  1096.     function GetSizeMax(out cbSize: Largeint): HResult; stdcall;
  1097.   end;
  1098.  
  1099. { IMoniker interface }
  1100.  
  1101.   PIMoniker = ^IMoniker;
  1102.   IMoniker = interface(IPersistStream)
  1103.     ['{0000000F-0000-0000-C000-000000000046}']
  1104.     function BindToObject(const bc: IBindCtx; const mkToLeft: IMoniker;
  1105.       const iidResult: TIID; out vResult): HResult; stdcall;
  1106.     function BindToStorage(const bc: IBindCtx; const mkToLeft: IMoniker;
  1107.       const iid: TIID; out vObj): HResult; stdcall;
  1108.     function Reduce(const bc: IBindCtx; dwReduceHowFar: Longint;
  1109.       mkToLeft: PIMoniker; out mkReduced: IMoniker): HResult; stdcall;
  1110.     function ComposeWith(const mkRight: IMoniker; fOnlyIfNotGeneric: BOOL;
  1111.       out mkComposite: IMoniker): HResult; stdcall;
  1112.     function Enum(fForward: BOOL; out enumMoniker: IEnumMoniker): HResult;
  1113.       stdcall;
  1114.     function IsEqual(const mkOtherMoniker: IMoniker): HResult; stdcall;
  1115.     function Hash(out dwHash: Longint): HResult; stdcall;
  1116.     function IsRunning(const bc: IBindCtx; const mkToLeft: IMoniker;
  1117.       const mkNewlyRunning: IMoniker): HResult; stdcall;
  1118.     function GetTimeOfLastChange(const bc: IBindCtx; const mkToLeft: IMoniker;
  1119.       out filetime: TFileTime): HResult; stdcall;
  1120.     function Inverse(out mk: IMoniker): HResult; stdcall;
  1121.     function CommonPrefixWith(const mkOther: IMoniker;
  1122.       out mkPrefix: IMoniker): HResult; stdcall;
  1123.     function RelativePathTo(const mkOther: IMoniker;
  1124.       out mkRelPath: IMoniker): HResult; stdcall;
  1125.     function GetDisplayName(const bc: IBindCtx; const mkToLeft: IMoniker;
  1126.       out pszDisplayName: POleStr): HResult; stdcall;
  1127.     function ParseDisplayName(const bc: IBindCtx; const mkToLeft: IMoniker;
  1128.       pszDisplayName: POleStr; out chEaten: Longint;
  1129.       out mkOut: IMoniker): HResult; stdcall;
  1130.     function IsSystemMoniker(out dwMksys: Longint): HResult; stdcall;
  1131.   end;
  1132.  
  1133. { IEnumString interface }
  1134.  
  1135.   IEnumString = interface(IUnknown)
  1136.     ['{00000101-0000-0000-C000-000000000046}']
  1137.     function Next(celt: Longint; out elt;
  1138.       pceltFetched: PLongint): HResult; stdcall;
  1139.     function Skip(celt: Longint): HResult; stdcall;
  1140.     function Reset: HResult; stdcall;
  1141.     function Clone(out enm: IEnumString): HResult; stdcall;
  1142.   end;
  1143.  
  1144. { IStream interface }
  1145.  
  1146.   PStatStg = ^TStatStg;
  1147.   TStatStg = record
  1148.     pwcsName: POleStr;
  1149.     dwType: Longint;
  1150.     cbSize: Largeint;
  1151.     mtime: TFileTime;
  1152.     ctime: TFileTime;
  1153.     atime: TFileTime;
  1154.     grfMode: Longint;
  1155.     grfLocksSupported: Longint;
  1156.     clsid: TCLSID;
  1157.     grfStateBits: Longint;
  1158.     reserved: Longint;
  1159.   end;
  1160.  
  1161.   IStream = interface(IUnknown)
  1162.     ['{0000000C-0000-0000-C000-000000000046}']
  1163.     function Read(pv: Pointer; cb: Longint; pcbRead: PLongint): HResult;
  1164.       stdcall;
  1165.     function Write(pv: Pointer; cb: Longint; pcbWritten: PLongint): HResult;
  1166.       stdcall;
  1167.     function Seek(dlibMove: Largeint; dwOrigin: Longint;
  1168.       out libNewPosition: Largeint): HResult; stdcall;
  1169.     function SetSize(libNewSize: Largeint): HResult; stdcall;
  1170.     function CopyTo(stm: IStream; cb: Largeint; out cbRead: Largeint;
  1171.       out cbWritten: Largeint): HResult; stdcall;
  1172.     function Commit(grfCommitFlags: Longint): HResult; stdcall;
  1173.     function Revert: HResult; stdcall;
  1174.     function LockRegion(libOffset: Largeint; cb: Largeint;
  1175.       dwLockType: Longint): HResult; stdcall;
  1176.     function UnlockRegion(libOffset: Largeint; cb: Largeint;
  1177.       dwLockType: Longint): HResult; stdcall;
  1178.     function Stat(out statstg: TStatStg; grfStatFlag: Longint): HResult;
  1179.       stdcall;
  1180.     function Clone(out stm: IStream): HResult; stdcall;
  1181.   end;
  1182.  
  1183. { IEnumStatStg interface }
  1184.  
  1185.   IEnumStatStg = interface(IUnknown)
  1186.     ['{0000000D-0000-0000-C000-000000000046}']
  1187.     function Next(celt: Longint; out elt;
  1188.       pceltFetched: PLongint): HResult; stdcall;
  1189.     function Skip(celt: Longint): HResult; stdcall;
  1190.     function Reset: HResult; stdcall;
  1191.     function Clone(out enm: IEnumStatStg): HResult; stdcall;
  1192.   end;
  1193.  
  1194. { IStorage interface }
  1195.  
  1196.   TSNB = ^POleStr;
  1197.  
  1198.   IStorage = interface(IUnknown)
  1199.     ['{0000000B-0000-0000-C000-000000000046}']
  1200.     function CreateStream(pwcsName: POleStr; grfMode: Longint; reserved1: Longint;
  1201.       reserved2: Longint; out stm: IStream): HResult; stdcall;
  1202.     function OpenStream(pwcsName: POleStr; reserved1: Pointer; grfMode: Longint;
  1203.       reserved2: Longint; out stm: IStream): HResult; stdcall;
  1204.     function CreateStorage(pwcsName: POleStr; grfMode: Longint;
  1205.       dwStgFmt: Longint; reserved2: Longint; out stg: IStorage): HResult;
  1206.       stdcall;
  1207.     function OpenStorage(pwcsName: POleStr; const stgPriority: IStorage;
  1208.       grfMode: Longint; snbExclude: TSNB; reserved: Longint;
  1209.       out stg: IStorage): HResult; stdcall;
  1210.     function CopyTo(ciidExclude: Longint; rgiidExclude: PIID;
  1211.       snbExclude: TSNB; const stgDest: IStorage): HResult; stdcall;
  1212.     function MoveElementTo(pwcsName: POleStr; const stgDest: IStorage;
  1213.       pwcsNewName: POleStr; grfFlags: Longint): HResult; stdcall;
  1214.     function Commit(grfCommitFlags: Longint): HResult; stdcall;
  1215.     function Revert: HResult; stdcall;
  1216.     function EnumElements(reserved1: Longint; reserved2: Pointer; reserved3: Longint;
  1217.       out enm: IEnumStatStg): HResult; stdcall;
  1218.     function DestroyElement(pwcsName: POleStr): HResult; stdcall;
  1219.     function RenameElement(pwcsOldName: POleStr;
  1220.       pwcsNewName: POleStr): HResult; stdcall;
  1221.     function SetElementTimes(pwcsName: POleStr; const ctime: TFileTime;
  1222.       const atime: TFileTime; const mtime: TFileTime): HResult;
  1223.       stdcall;
  1224.     function SetClass(const clsid: TCLSID): HResult; stdcall;
  1225.     function SetStateBits(grfStateBits: Longint; grfMask: Longint): HResult;
  1226.       stdcall;
  1227.     function Stat(out statstg: TStatStg; grfStatFlag: Longint): HResult;
  1228.       stdcall;
  1229.   end;
  1230.  
  1231. { IPersistFile interface }
  1232.  
  1233.   IPersistFile = interface(IPersist)
  1234.     ['{0000010B-0000-0000-C000-000000000046}']
  1235.     function IsDirty: HResult; stdcall;
  1236.     function Load(pszFileName: POleStr; dwMode: Longint): HResult;
  1237.       stdcall;
  1238.     function Save(pszFileName: POleStr; fRemember: BOOL): HResult;
  1239.       stdcall;
  1240.     function SaveCompleted(pszFileName: POleStr): HResult;
  1241.       stdcall;
  1242.     function GetCurFile(out pszFileName: POleStr): HResult;
  1243.       stdcall;
  1244.   end;
  1245.  
  1246. { IPersistStorage interface }
  1247.  
  1248.   IPersistStorage = interface(IPersist)
  1249.     ['{0000010A-0000-0000-C000-000000000046}']
  1250.     function IsDirty: HResult; stdcall;
  1251.     function InitNew(const stg: IStorage): HResult; stdcall;
  1252.     function Load(const stg: IStorage): HResult; stdcall;
  1253.     function Save(const stgSave: IStorage; fSameAsLoad: BOOL): HResult;
  1254.       stdcall;
  1255.     function SaveCompleted(const stgNew: IStorage): HResult; stdcall;
  1256.     function HandsOffStorage: HResult; stdcall;
  1257.   end;
  1258.  
  1259. { ILockBytes interface }
  1260.  
  1261.   ILockBytes = interface(IUnknown)
  1262.     ['{0000000A-0000-0000-C000-000000000046}']
  1263.     function ReadAt(ulOffset: Largeint; pv: Pointer; cb: Longint;
  1264.       pcbRead: PLongint): HResult; stdcall;
  1265.     function WriteAt(ulOffset: Largeint; pv: Pointer; cb: Longint;
  1266.       pcbWritten: PLongint): HResult; stdcall;
  1267.     function Flush: HResult; stdcall;
  1268.     function SetSize(cb: Largeint): HResult; stdcall;
  1269.     function LockRegion(libOffset: Largeint; cb: Largeint;
  1270.       dwLockType: Longint): HResult; stdcall;
  1271.     function UnlockRegion(libOffset: Largeint; cb: Largeint;
  1272.       dwLockType: Longint): HResult; stdcall;
  1273.     function Stat(out statstg: TStatStg; grfStatFlag: Longint): HResult;
  1274.       stdcall;
  1275.   end;
  1276.  
  1277. { IEnumFormatEtc interface }
  1278.  
  1279.   PDVTargetDevice = ^TDVTargetDevice;
  1280.   TDVTargetDevice = record
  1281.     tdSize: Longint;
  1282.     tdDriverNameOffset: Word;
  1283.     tdDeviceNameOffset: Word;
  1284.     tdPortNameOffset: Word;
  1285.     tdExtDevmodeOffset: Word;
  1286.     tdData: record end;
  1287.   end;
  1288.  
  1289.   PClipFormat = ^TClipFormat;
  1290.   TClipFormat = Word;
  1291.  
  1292.   PFormatEtc = ^TFormatEtc;
  1293.   TFormatEtc = record
  1294.     cfFormat: TClipFormat;
  1295.     ptd: PDVTargetDevice;
  1296.     dwAspect: Longint;
  1297.     lindex: Longint;
  1298.     tymed: Longint;
  1299.   end;
  1300.  
  1301.   IEnumFormatEtc = interface(IUnknown)
  1302.     ['{00000103-0000-0000-C000-000000000046}']
  1303.     function Next(celt: Longint; out elt;
  1304.       pceltFetched: PLongint): HResult; stdcall;
  1305.     function Skip(celt: Longint): HResult; stdcall;
  1306.     function Reset: HResult; stdcall;
  1307.     function Clone(out enum: IEnumFormatEtc): HResult; stdcall;
  1308.   end;
  1309.  
  1310. { IEnumStatData interface }
  1311.  
  1312.   PStatData = ^TStatData;
  1313.   TStatData = record
  1314.     formatetc: TFormatEtc;
  1315.     advf: Longint;
  1316.     advSink: IAdviseSink;
  1317.     dwConnection: Longint;
  1318.   end;
  1319.  
  1320.   IEnumStatData = interface(IUnknown)
  1321.     ['{00000105-0000-0000-C000-000000000046}']
  1322.     function Next(celt: Longint; out elt;
  1323.       pceltFetched: PLongint): HResult; stdcall;
  1324.     function Skip(celt: Longint): HResult; stdcall;
  1325.     function Reset: HResult; stdcall;
  1326.     function Clone(out enum: IEnumStatData): HResult; stdcall;
  1327.   end;
  1328.  
  1329. { IRootStorage interface }
  1330.  
  1331.   IRootStorage = interface(IUnknown)
  1332.     ['{00000012-0000-0000-C000-000000000046}']
  1333.     function SwitchToFile(pszFile: POleStr): HResult; stdcall;
  1334.   end;
  1335.  
  1336. { IAdviseSink interface }
  1337.  
  1338.   PRemStgMedium = ^TRemStgMedium;
  1339.   TRemStgMedium = record
  1340.     tymed: Longint;
  1341.     dwHandleType: Longint;
  1342.     pData: Longint;
  1343.     pUnkForRelease: Longint;
  1344.     cbData: Longint;
  1345.     data: record end;
  1346.   end;
  1347.  
  1348.   PStgMedium = ^TStgMedium;
  1349.   TStgMedium = record
  1350.     tymed: Longint;
  1351.     case Integer of
  1352.       0: (hBitmap: HBitmap; unkForRelease: Pointer{IUnknown});
  1353.       1: (hMetaFilePict: THandle);
  1354.       2: (hEnhMetaFile: THandle);
  1355.       3: (hGlobal: HGlobal);
  1356.       4: (lpszFileName: POleStr);
  1357.       5: (stm: Pointer{IStream});
  1358.       6: (stg: Pointer{IStorage});
  1359.   end;
  1360.  
  1361.   IAdviseSink = interface(IUnknown)
  1362.     ['{0000010F-0000-0000-C000-000000000046}']
  1363.     procedure OnDataChange(const formatetc: TFormatEtc; const stgmed: TStgMedium);
  1364.       stdcall;
  1365.     procedure OnViewChange(dwAspect: Longint; lindex: Longint);
  1366.       stdcall;
  1367.     procedure OnRename(const mk: IMoniker); stdcall;
  1368.     procedure OnSave; stdcall;
  1369.     procedure OnClose; stdcall;
  1370.   end;
  1371.  
  1372. { IAdviseSink2 interface }
  1373.  
  1374.   IAdviseSink2 = interface(IAdviseSink)
  1375.     ['{00000125-0000-0000-C000-000000000046}']
  1376.     procedure OnLinkSrcChange(const mk: IMoniker); stdcall;
  1377.   end;
  1378.  
  1379. { IDataObject interface }
  1380.  
  1381.   IDataObject = interface(IUnknown)
  1382.     ['{0000010E-0000-0000-C000-000000000046}']
  1383.     function GetData(const formatetcIn: TFormatEtc; out medium: TStgMedium):
  1384.       HResult; stdcall;
  1385.     function GetDataHere(const formatetc: TFormatEtc; out medium: TStgMedium):
  1386.       HResult; stdcall;
  1387.     function QueryGetData(const formatetc: TFormatEtc): HResult;
  1388.       stdcall;
  1389.     function GetCanonicalFormatEtc(const formatetc: TFormatEtc;
  1390.       out formatetcOut: TFormatEtc): HResult; stdcall;
  1391.     function SetData(const formatetc: TFormatEtc; var medium: TStgMedium;
  1392.       fRelease: BOOL): HResult; stdcall;
  1393.     function EnumFormatEtc(dwDirection: Longint; out enumFormatEtc:
  1394.       IEnumFormatEtc): HResult; stdcall;
  1395.     function DAdvise(const formatetc: TFormatEtc; advf: Longint;
  1396.       const advSink: IAdviseSink; out dwConnection: Longint): HResult; stdcall;
  1397.     function DUnadvise(dwConnection: Longint): HResult; stdcall;
  1398.     function EnumDAdvise(out enumAdvise: IEnumStatData): HResult;
  1399.       stdcall;
  1400.   end;
  1401.  
  1402. { IDataAdviseHolder interface }
  1403.  
  1404.   IDataAdviseHolder = interface(IUnknown)
  1405.     ['{00000110-0000-0000-C000-000000000046}']
  1406.     function Advise(const dataObject: IDataObject; const fetc: TFormatEtc;
  1407.       advf: Longint; const advise: IAdviseSink; out pdwConnection: Longint): HResult;
  1408.       stdcall;
  1409.     function Unadvise(dwConnection: Longint): HResult; stdcall;
  1410.     function EnumAdvise(out enumAdvise: IEnumStatData): HResult; stdcall;
  1411.     function SendOnDataChange(const dataObject: IDataObject; dwReserved: Longint;
  1412.       advf: Longint): HResult; stdcall;
  1413.   end;
  1414.  
  1415. { IMessageFilter interface }
  1416.  
  1417.   PInterfaceInfo = ^TInterfaceInfo;
  1418.   TInterfaceInfo = record
  1419.     unk: IUnknown;
  1420.     iid: TIID;
  1421.     wMethod: Word;
  1422.   end;
  1423.  
  1424.   IMessageFilter = interface(IUnknown)
  1425.     ['{00000016-0000-0000-C000-000000000046}']
  1426.     function HandleInComingCall(dwCallType: Longint; htaskCaller: HTask;
  1427.       dwTickCount: Longint; lpInterfaceInfo: PInterfaceInfo): Longint;
  1428.       stdcall;
  1429.     function RetryRejectedCall(htaskCallee: HTask; dwTickCount: Longint;
  1430.       dwRejectType: Longint): Longint; stdcall;
  1431.     function MessagePending(htaskCallee: HTask; dwTickCount: Longint;
  1432.       dwPendingType: Longint): Longint; stdcall;
  1433.   end;
  1434.  
  1435. { IRpcChannelBuffer interface }
  1436.  
  1437.   TRpcOleDataRep = Longint;
  1438.  
  1439.   PRpcOleMessage = ^TRpcOleMessage;
  1440.   TRpcOleMessage = record
  1441.     reserved1: Pointer;
  1442.     dataRepresentation: TRpcOleDataRep;
  1443.     Buffer: Pointer;
  1444.     cbBuffer: Longint;
  1445.     iMethod: Longint;
  1446.     reserved2: array[0..4] of Pointer;
  1447.     rpcFlags: Longint;
  1448.   end;
  1449.  
  1450.   IRpcChannelBuffer = interface(IUnknown)
  1451.     ['{D5F56B60-593B-101A-B569-08002B2DBF7A}']
  1452.     function GetBuffer(var message: TRpcOleMessage; iid: TIID): HResult;
  1453.       stdcall;
  1454.     function SendReceive(var message: TRpcOleMessage;
  1455.       var status: Longint): HResult; stdcall;
  1456.     function FreeBuffer(var message: TRpcOleMessage): HResult;
  1457.       stdcall;
  1458.     function GetDestCtx(out dwDestContext: Longint;
  1459.       out pvDestContext): HResult; stdcall;
  1460.     function IsConnected: HResult; stdcall;
  1461.   end;
  1462.  
  1463. { IRpcProxyBuffer interface }
  1464.  
  1465.   IRpcProxyBuffer = interface(IUnknown)
  1466.     ['{D5F56A34-593B-101A-B569-08002B2DBF7A}']
  1467.     function Connect(const rpcChannelBuffer: IRpcChannelBuffer): HResult;
  1468.       stdcall;
  1469.     procedure Disconnect; stdcall;
  1470.   end;
  1471.  
  1472. { IRpcStubBuffer interface }
  1473.  
  1474.   IRpcStubBuffer = interface(IUnknown)
  1475.     ['{D5F56AFC-593B-101A-B569-08002B2DBF7A}']
  1476.     function Connect(const unkServer: IUnknown): HResult; stdcall;
  1477.     procedure Disconnect; stdcall;
  1478.     function Invoke(var rpcmsg: TRpcOleMessage; rpcChannelBuffer:
  1479.       IRpcChannelBuffer): HResult; stdcall;
  1480.     function IsIIDSupported(const iid: TIID): Pointer{IRpcStubBuffer};
  1481.       stdcall;
  1482.     function CountRefs: Longint; stdcall;
  1483.     function DebugServerQueryInterface(var pv): HResult;
  1484.       stdcall;
  1485.     procedure DebugServerRelease(pv: Pointer); stdcall;
  1486.   end;
  1487.  
  1488. { IPSFactoryBuffer interface }
  1489.  
  1490.   IPSFactoryBuffer = interface(IUnknown)
  1491.     ['{D5F569D0-593B-101A-B569-08002B2DBF7A}']
  1492.     function CreateProxy(const unkOuter: IUnknown; const iid: TIID;
  1493.       out proxy: IRpcProxyBuffer; out pv): HResult; stdcall;
  1494.     function CreateStub(const iid: TIID; const unkServer: IUnknown;
  1495.       out stub: IRpcStubBuffer): HResult; stdcall;
  1496.   end;
  1497.  
  1498.   IChannelHook = interface(IUnknown) 
  1499.     ['{1008C4A0-7613-11CF-9AF1-0020AF6E72F4}']
  1500.     procedure ClientGetSize(const uExtent: TGUID; const iid: TIID;
  1501.       out DataSize: Longint); stdcall;
  1502.     procedure ClientFillBuffer(const uExtent: TGUID; const iid: TIID;
  1503.       var DataSize: Longint; var DataBuffer); stdcall;
  1504.     procedure ClientNotify(const uExtent: TGUID; const iid: TIID;
  1505.       DataSize: Longint; var DataBuffer; lDataRep: Longint;
  1506.       hrFault: HResult); stdcall;
  1507.     procedure ServerNotify(const uExtent: TGUID; const iid: TIID;
  1508.       DataSize: Longint; var DataBuffer; lDataRep: Longint); stdcall;
  1509.     procedure ServerGetSize(const uExtent: TGUID; const iid: TIID;
  1510.       hrFault: HResult; out DataSize: Longint); stdcall;
  1511.     procedure ServerFillBuffer(const uExtent: TGUID; const iid: TIID;
  1512.       var DataSize: Longint; var DataBuffer; hrFault: HResult); stdcall;
  1513.   end;
  1514.  
  1515.   IFillLockBytes = interface(IUnknown)
  1516.     ['{99CAF010-415E-11CF-8814-00AA00B569F5}']
  1517.     function FillAppend(const pv; cb: Longint; 
  1518.       out cbWritten: Longint): HResult; stdcall;
  1519.     function FillAt(Offset: Longint; const pv; cb: Longint; 
  1520.       out cbWritten: Longint): HResult; stdcall;
  1521.     function SetFillSize(Offset: Longint): HResult; stdcall;
  1522.     function Terminate(bCanceled: Boolean): HResult; stdcall;
  1523.   end;
  1524.  
  1525. { Automation types }
  1526.  
  1527.   PBStr = ^TBStr;
  1528.   TBStr = POleStr;
  1529.  
  1530.   PBStrList = ^TBStrList;
  1531.   TBStrList = array[0..65535] of TBStr;
  1532.   
  1533. { from WTYPES.H }
  1534.   PDecimal = ^TDecimal;
  1535.   TDecimal = record
  1536.     wReserved: Word;
  1537.     case Integer of
  1538.       0: (scale, sign: Byte; Hi32: Longint;
  1539.       case Integer of
  1540.         0: (Lo32, Mid32: Longint);
  1541.         1: (Lo64: LONGLONG));
  1542.       1: (signscale: Word);
  1543.   end;
  1544.  
  1545.   PBlob = ^TBlob;
  1546.   TBlob = record
  1547.     cbSize: Longint;
  1548.     pBlobData: Pointer;
  1549.   end;
  1550.  
  1551.   PClipData = ^TClipData;
  1552.   TClipData = record
  1553.     cbSize: Longint;
  1554.     ulClipFmt: Longint;
  1555.     pClipData: Pointer;
  1556.   end;
  1557.  
  1558. { from OAIDL.H }  
  1559.   PSafeArrayBound = ^TSafeArrayBound;
  1560.   TSafeArrayBound = record
  1561.     cElements: Longint;
  1562.     lLbound: Longint;
  1563.   end;
  1564.  
  1565.   PSafeArray = ^TSafeArray;
  1566.   TSafeArray = record
  1567.     cDims: Word;
  1568.     fFeatures: Word;
  1569.     cbElements: Longint;
  1570.     cLocks: Longint;
  1571.     pvData: Pointer;
  1572.     rgsabound: array[0..0] of TSafeArrayBound;
  1573.   end;
  1574.  
  1575.   TOleDate = Double;
  1576.  
  1577.   TOleBool = WordBool;
  1578.  
  1579.   TVarType = Word;
  1580.  
  1581. { from OAIDL.H }
  1582.   PVariantArg = ^TVariantArg;
  1583.   TVariantArg = record
  1584.     vt: TVarType;
  1585.     wReserved1: Word;
  1586.     wReserved2: Word;
  1587.     wReserved3: Word;
  1588.     case Integer of
  1589.       VT_UI1:                  (bVal: Byte);
  1590.       VT_I2:                   (iVal: Smallint);
  1591.       VT_I4:                   (lVal: Longint);
  1592.       VT_R4:                   (fltVal: Single);
  1593.       VT_R8:                   (dblVal: Double);
  1594.       VT_BOOL:                 (vbool: TOleBool);
  1595.       VT_ERROR:                (scode: HResult);
  1596.       VT_CY:                   (cyVal: Currency);
  1597.       VT_DATE:                 (date: TOleDate);
  1598.       VT_BSTR:                 (bstrVal: PWideChar{WideString});
  1599.       VT_UNKNOWN:              (unkVal: Pointer{IUnknown});
  1600.       VT_DISPATCH:             (dispVal: Pointer{IDispatch});
  1601.       VT_ARRAY:                (parray: PSafeArray);
  1602.       VT_BYREF or VT_UI1:      (pbVal: ^Byte);
  1603.       VT_BYREF or VT_I2:       (piVal: ^Smallint);
  1604.       VT_BYREF or VT_I4:       (plVal: ^Longint);
  1605.       VT_BYREF or VT_R4:       (pfltVal: ^Single);
  1606.       VT_BYREF or VT_R8:       (pdblVal: ^Double);
  1607.       VT_BYREF or VT_BOOL:     (pbool: ^TOleBool);
  1608.       VT_BYREF or VT_ERROR:    (pscode: ^HResult);
  1609.       VT_BYREF or VT_CY:       (pcyVal: ^Currency);
  1610.       VT_BYREF or VT_DATE:     (pdate: ^TOleDate);
  1611.       VT_BYREF or VT_BSTR:     (pbstrVal: ^WideString);
  1612.       VT_BYREF or VT_UNKNOWN:  (punkVal: ^IUnknown);
  1613.       VT_BYREF or VT_DISPATCH: (pdispVal: ^IDispatch);
  1614.       VT_BYREF or VT_ARRAY:    (pparray: ^PSafeArray);
  1615.       VT_BYREF or VT_VARIANT:  (pvarVal: PVariant);
  1616.       VT_BYREF:                (byRef: Pointer);
  1617.       VT_I1:                   (cVal: Char);
  1618.       VT_UI2:                  (uiVal: Word);
  1619.       VT_UI4:                  (ulVal: Longint);
  1620.       VT_INT:                  (intVal: Integer);
  1621.       VT_UINT:                 (uintVal: Integer);
  1622.       VT_BYREF or VT_DECIMAL:  (pdecVal: PDecimal);
  1623.       VT_BYREF or VT_I1:       (pcVal: PChar);
  1624.       VT_BYREF or VT_UI2:      (puiVal: PWord);
  1625.       VT_BYREF or VT_UI4:      (pulVal: PInteger);
  1626.       VT_BYREF or VT_INT:      (pintVal: PInteger);
  1627.       VT_BYREF or VT_UINT:     (puintVal: PInteger);
  1628.   end;
  1629.  
  1630.   PVariantArgList = ^TVariantArgList;
  1631.   TVariantArgList = array[0..65535] of TVariantArg;
  1632.  
  1633.   TDispID = Longint;
  1634.  
  1635.   PDispIDList = ^TDispIDList;
  1636.   TDispIDList = array[0..65535] of TDispID;
  1637.  
  1638.   TMemberID = Longint;
  1639.  
  1640.   PMemberIDList = ^TMemberIDList;
  1641.   TMemberIDList = array[0..65535] of TMemberID;
  1642.  
  1643.   TPropID = Longint;
  1644.  
  1645.   HRefType = Longint;
  1646.  
  1647.   TTypeKind = Longint;
  1648.  
  1649.   PArrayDesc = ^TArrayDesc;
  1650.  
  1651.   PTypeDesc= ^TTypeDesc;
  1652.   TTypeDesc = record
  1653.     case Integer of
  1654.       VT_PTR:         (ptdesc: PTypeDesc; vt: TVarType);
  1655.       VT_CARRAY:      (padesc: PArrayDesc);
  1656.       VT_USERDEFINED: (hreftype: HRefType);
  1657.   end;
  1658.  
  1659.   TArrayDesc = record
  1660.     tdescElem: TTypeDesc;
  1661.     cDims: Word;
  1662.     rgbounds: array[0..0] of TSafeArrayBound;
  1663.   end;
  1664.  
  1665.   PIDLDesc = ^TIDLDesc;
  1666.   TIDLDesc = record
  1667.     dwReserved: Longint;
  1668.     wIDLFlags: Word;
  1669.   end;
  1670.  
  1671.   PElemDesc = ^TElemDesc;
  1672.   TElemDesc = record
  1673.     tdesc: TTypeDesc;
  1674.     idldesc: TIDLDesc;
  1675.   end;
  1676.  
  1677.   PElemDescList = ^TElemDescList;
  1678.   TElemDescList = array[0..65535] of TElemDesc;
  1679.  
  1680.   PTypeAttr = ^TTypeAttr;
  1681.   TTypeAttr = record
  1682.     guid: TGUID;
  1683.     lcid: TLCID;
  1684.     dwReserved: Longint;
  1685.     memidConstructor: TMemberID;
  1686.     memidDestructor: TMemberID;
  1687.     lpstrSchema: POleStr;
  1688.     cbSizeInstance: Longint;
  1689.     typekind: TTypeKind;
  1690.     cFuncs: Word;
  1691.     cVars: Word;
  1692.     cImplTypes: Word;
  1693.     cbSizeVft: Word;
  1694.     cbAlignment: Word;
  1695.     wTypeFlags: Word;
  1696.     wMajorVerNum: Word;
  1697.     wMinorVerNum: Word;
  1698.     tdescAlias: TTypeDesc;
  1699.     idldescType: TIDLDesc;
  1700.   end;
  1701.  
  1702.   PDispParams = ^TDispParams;
  1703.   TDispParams = record
  1704.     rgvarg: PVariantArgList;
  1705.     rgdispidNamedArgs: PDispIDList;
  1706.     cArgs: Longint;
  1707.     cNamedArgs: Longint;
  1708.   end;
  1709.  
  1710.   PExcepInfo = ^TExcepInfo;
  1711.  
  1712.   TFNDeferredFillIn = function(ExInfo: PExcepInfo): HResult stdcall;
  1713.  
  1714.   TExcepInfo = record
  1715.     wCode: Word;
  1716.     wReserved: Word;
  1717.     bstrSource: WideString;
  1718.     bstrDescription: WideString;
  1719.     bstrHelpFile: WideString;
  1720.     dwHelpContext: Longint;
  1721.     pvReserved: Pointer;
  1722.     pfnDeferredFillIn: TFNDeferredFillIn;
  1723.     scode: HResult;
  1724.   end;
  1725.  
  1726.   TFuncKind = Longint;
  1727.   TInvokeKind = Longint;
  1728.   TCallConv = Longint;
  1729.  
  1730.   PFuncDesc = ^TFuncDesc;
  1731.   TFuncDesc = record
  1732.     memid: TMemberID;
  1733.     lprgscode: PResultList;
  1734.     lprgelemdescParam: PElemDescList;
  1735.     funckind: TFuncKind;
  1736.     invkind: TInvokeKind;
  1737.     callconv: TCallConv;
  1738.     cParams: Smallint;
  1739.     cParamsOpt: Smallint;
  1740.     oVft: Smallint;
  1741.     cScodes: Smallint;
  1742.     elemdescFunc: TElemDesc;
  1743.     wFuncFlags: Word;
  1744.   end;
  1745.  
  1746.   TVarKind = Longint;
  1747.  
  1748.   PVarDesc = ^TVarDesc;
  1749.   TVarDesc = record
  1750.     memid: TMemberID;
  1751.     lpstrSchema: POleStr;
  1752.     case Integer of
  1753.       VAR_PERINSTANCE: (
  1754.   oInst: Longint;
  1755.   elemdescVar: TElemDesc;
  1756.   wVarFlags: Word;
  1757.   varkind: TVarKind);
  1758.       VAR_CONST: (
  1759.   lpvarValue: PVariant);
  1760.   end;
  1761.  
  1762. { ICreateTypeInfo interface }
  1763.  
  1764.   ICreateTypeInfo = interface(IUnknown)
  1765.     ['{00020405-0000-0000-C000-000000000046}']
  1766.     function SetGuid(const guid: TGUID): HResult; stdcall;
  1767.     function SetTypeFlags(uTypeFlags: Integer): HResult; stdcall;
  1768.     function SetDocString(pstrDoc: POleStr): HResult; stdcall;
  1769.     function SetHelpContext(dwHelpContext: Longint): HResult; stdcall;
  1770.     function SetVersion(wMajorVerNum: Word; wMinorVerNum: Word): HResult;
  1771.       stdcall;
  1772.     function AddRefTypeInfo(const tinfo: ITypeInfo; out reftype: HRefType): HResult;
  1773.       stdcall;
  1774.     function AddFuncDesc(index: Integer; const funcdesc: TFuncDesc): HResult;
  1775.       stdcall;
  1776.     function AddImplType(index: Integer; reftype: HRefType): HResult;
  1777.       stdcall;
  1778.     function SetImplTypeFlags(index: Integer; impltypeflags: Integer): HResult;
  1779.       stdcall;
  1780.     function SetAlignment(cbAlignment: Word): HResult; stdcall;
  1781.     function SetSchema(lpstrSchema: POleStr): HResult; stdcall;
  1782.     function AddVarDesc(index: Integer; const vardesc: TVarDesc): HResult;
  1783.       stdcall;
  1784.     function SetFuncAndParamNames(index: Integer; rgszNames: POleStrList;
  1785.       cNames: Integer): HResult; stdcall;
  1786.     function SetVarName(index: Integer; szName: POleStr): HResult; stdcall;
  1787.     function SetTypeDescAlias(const descAlias: TTypeDesc): HResult; stdcall;
  1788.     function DefineFuncAsDllEntry(index: Integer; szDllName: POleStr;
  1789.       szProcName: POleStr): HResult; stdcall;
  1790.     function SetFuncDocString(index: Integer; szDocString: POleStr): HResult;
  1791.       stdcall;
  1792.     function SetVarDocString(index: Integer; szDocString: POleStr): HResult;
  1793.       stdcall;
  1794.     function SetFuncHelpContext(index: Integer; dwHelpContext: Longint): HResult;
  1795.       stdcall;
  1796.     function SetVarHelpContext(index: Integer; dwHelpContext: Longint): HResult;
  1797.       stdcall;
  1798.     function SetMops(index: Integer; const bstrMops: WideString): HResult; stdcall;
  1799.     function SetTypeIdldesc(const idldesc: TIDLDesc): HResult; stdcall;
  1800.     function LayOut: HResult; stdcall;
  1801.   end;
  1802.  
  1803. { ICreateTypeLib interface }
  1804.  
  1805.   ICreateTypeLib = interface(IUnknown)
  1806.     ['{00020406-0000-0000-C000-000000000046}']
  1807.     function CreateTypeInfo(szName: POleStr; tkind: TTypeKind;
  1808.       out ictinfo: ICreateTypeInfo): HResult; stdcall;
  1809.     function SetName(szName: POleStr): HResult; stdcall;
  1810.     function SetVersion(wMajorVerNum: Word; wMinorVerNum: Word): HResult; stdcall;
  1811.     function SetGuid(const guid: TGUID): HResult; stdcall;
  1812.     function SetDocString(szDoc: POleStr): HResult; stdcall;
  1813.     function SetHelpFileName(szHelpFileName: POleStr): HResult; stdcall;
  1814.     function SetHelpContext(dwHelpContext: Longint): HResult; stdcall;
  1815.     function SetLcid(lcid: TLCID): HResult; stdcall;
  1816.     function SetLibFlags(uLibFlags: Integer): HResult; stdcall;
  1817.     function SaveAllChanges: HResult; stdcall;
  1818.   end;
  1819.  
  1820. { IEnumVariant interface }
  1821.  
  1822.   IEnumVariant = interface(IUnknown)
  1823.     ['{00020404-0000-0000-C000-000000000046}']
  1824.     function Next(celt: Longint; out elt;
  1825.       pceltFetched: PLongint): HResult; stdcall;
  1826.     function Skip(celt: Longint): HResult; stdcall;
  1827.     function Reset: HResult; stdcall;
  1828.     function Clone(out enum: IEnumVariant): HResult; stdcall;
  1829.   end;
  1830.  
  1831. { ITypeComp interface }
  1832.  
  1833.   TDescKind = Longint;
  1834.  
  1835.   PBindPtr = ^TBindPtr;
  1836.   TBindPtr = record
  1837.     case Integer of
  1838.       0: (lpfuncdesc: PFuncDesc);
  1839.       1: (lpvardesc: PVarDesc);
  1840.       2: (lptcomp: ITypeComp);
  1841.   end;
  1842.  
  1843.   ITypeComp = interface(IUnknown)
  1844.     ['{00020403-0000-0000-C000-000000000046}']
  1845.     function Bind(szName: POleStr; lHashVal: Longint; wflags: Word;
  1846.       out tinfo: ITypeInfo; out desckind: TDescKind;
  1847.       out bindptr: TBindPtr): HResult; stdcall;
  1848.     function BindType(szName: POleStr; lHashVal: Longint;
  1849.       out tinfo: ITypeInfo; out tcomp: ITypeComp): HResult;
  1850.       stdcall;
  1851.   end;
  1852.  
  1853. { ITypeInfo interface }
  1854.  
  1855.   ITypeInfo = interface(IUnknown)
  1856.     ['{00020401-0000-0000-C000-000000000046}']
  1857.     function GetTypeAttr(out ptypeattr: PTypeAttr): HResult; stdcall;
  1858.     function GetTypeComp(out tcomp: ITypeComp): HResult; stdcall;
  1859.     function GetFuncDesc(index: Integer; out pfuncdesc: PFuncDesc): HResult;
  1860.       stdcall;
  1861.     function GetVarDesc(index: Integer; out pvardesc: PVarDesc): HResult;
  1862.       stdcall;
  1863.     function GetNames(memid: TMemberID; rgbstrNames: PBStrList;
  1864.       cMaxNames: Integer; out cNames: Integer): HResult; stdcall;
  1865.     function GetRefTypeOfImplType(index: Integer; out reftype: HRefType): HResult;
  1866.       stdcall;
  1867.     function GetImplTypeFlags(index: Integer; out impltypeflags: Integer): HResult;
  1868.       stdcall;
  1869.     function GetIDsOfNames(rgpszNames: POleStrList; cNames: Integer;
  1870.       rgmemid: PMemberIDList): HResult; stdcall;
  1871.     function Invoke(pvInstance: Pointer; memid: TMemberID; flags: Word;
  1872.       var dispParams: TDispParams; varResult: PVariant;
  1873.       excepInfo: PExcepInfo; argErr: PInteger): HResult; stdcall;
  1874.     function GetDocumentation(memid: TMemberID; pbstrName: PWideString;
  1875.       pbstrDocString: PWideString; pdwHelpContext: PLongint;
  1876.       pbstrHelpFile: PWideString): HResult; stdcall;
  1877.     function GetDllEntry(memid: TMemberID; invkind: TInvokeKind;
  1878.       out bstrDllName, bstrName: WideString; out wOrdinal: Word): HResult;
  1879.       stdcall;
  1880.     function GetRefTypeInfo(reftype: HRefType; out tinfo: ITypeInfo): HResult;
  1881.       stdcall;
  1882.     function AddressOfMember(memid: TMemberID; invkind: TInvokeKind;
  1883.       out ppv: Pointer): HResult; stdcall;
  1884.     function CreateInstance(const unkOuter: IUnknown; const iid: TIID;
  1885.       out vObj): HResult; stdcall;
  1886.     function GetMops(memid: TMemberID; out bstrMops: WideString): HResult;
  1887.       stdcall;
  1888.     function GetContainingTypeLib(out tlib: ITypeLib; out pindex: Integer): HResult;
  1889.       stdcall;
  1890.     procedure ReleaseTypeAttr(ptypeattr: PTypeAttr); stdcall;
  1891.     procedure ReleaseFuncDesc(pfuncdesc: PFuncDesc); stdcall;
  1892.     procedure ReleaseVarDesc(pvardesc: PVarDesc); stdcall;
  1893.   end;
  1894.  
  1895. { ITypeLib interface }
  1896.  
  1897.   TSysKind = Longint;
  1898.  
  1899.   PTLibAttr = ^TTLibAttr;
  1900.   TTLibAttr = record
  1901.     guid: TGUID;
  1902.     lcid: TLCID;
  1903.     syskind: TSysKind;
  1904.     wMajorVerNum: Word;
  1905.     wMinorVerNum: Word;
  1906.     wLibFlags: Word;
  1907.   end;
  1908.  
  1909.   PTypeInfoList = ^TTypeInfoList;
  1910.   TTypeInfoList = array[0..65535] of ITypeInfo;
  1911.  
  1912.   ITypeLib = interface(IUnknown)
  1913.     ['{00020402-0000-0000-C000-000000000046}']
  1914.     function GetTypeInfoCount: Integer; stdcall;
  1915.     function GetTypeInfo(index: Integer; out tinfo: ITypeInfo): HResult; stdcall;
  1916.     function GetTypeInfoType(index: Integer; out tkind: TTypeKind): HResult;
  1917.       stdcall;
  1918.     function GetTypeInfoOfGuid(const guid: TGUID; out tinfo: ITypeInfo): HResult;
  1919.       stdcall;
  1920.     function GetLibAttr(out ptlibattr: PTLibAttr): HResult; stdcall;
  1921.     function GetTypeComp(out tcomp: ITypeComp): HResult; stdcall;
  1922.     function GetDocumentation(index: Integer; pbstrName: PWideString;
  1923.       pbstrDocString: PWideString; pdwHelpContext: PLongint;
  1924.       pbstrHelpFile: PWideString): HResult; stdcall;
  1925.     function IsName(szNameBuf: POleStr; lHashVal: Longint; out fName: BOOL): HResult;
  1926.       stdcall;
  1927.     function FindName(szNameBuf: POleStr; lHashVal: Longint;
  1928.       rgptinfo: PTypeInfoList; rgmemid: PMemberIDList;
  1929.       out pcFound: Word): HResult; stdcall;
  1930.     procedure ReleaseTLibAttr(ptlibattr: PTLibAttr); stdcall;
  1931.   end;
  1932.  
  1933. { IErrorInfo interface }
  1934.  
  1935.   IErrorInfo = interface(IUnknown)
  1936.     ['{1CF2B120-547D-101B-8E65-08002B2BD119}']
  1937.     function GetGUID(out guid: TGUID): HResult; stdcall;
  1938.     function GetSource(out bstrSource: WideString): HResult; stdcall;
  1939.     function GetDescription(out bstrDescription: WideString): HResult; stdcall;
  1940.     function GetHelpFile(out bstrHelpFile: WideString): HResult; stdcall;
  1941.     function GetHelpContext(out dwHelpContext: Longint): HResult; stdcall;
  1942.   end;
  1943.  
  1944. { ICreateErrorInfo interface }
  1945.  
  1946.   ICreateErrorInfo = interface(IUnknown)
  1947.     ['{22F03340-547D-101B-8E65-08002B2BD119}']
  1948.     function SetGUID(const guid: TGUID): HResult; stdcall;
  1949.     function SetSource(szSource: POleStr): HResult; stdcall;
  1950.     function SetDescription(szDescription: POleStr): HResult; stdcall;
  1951.     function SetHelpFile(szHelpFile: POleStr): HResult; stdcall;
  1952.     function SetHelpContext(dwHelpContext: Longint): HResult; stdcall;
  1953.   end;
  1954.  
  1955. { ISupportErrorInfo interface }
  1956.  
  1957.   ISupportErrorInfo = interface(IUnknown)
  1958.     ['{DF0B3D60-548F-101B-8E65-08002B2BD119}']
  1959.     function InterfaceSupportsErrorInfo(const iid: TIID): HResult; stdcall;
  1960.   end;
  1961.  
  1962. { from OLEAUTO.H }  
  1963. { IDispatch implementation support }
  1964.  
  1965.   PParamData = ^TParamData;
  1966.   TParamData = record
  1967.     szName: POleStr;
  1968.     vt: TVarType;
  1969.   end;
  1970.  
  1971.   PParamDataList = ^TParamDataList;
  1972.   TParamDataList = array[0..65535] of TParamData;
  1973.  
  1974.   PMethodData = ^TMethodData;
  1975.   TMethodData = record
  1976.     szName: POleStr;
  1977.     ppdata: PParamDataList;
  1978.     dispid: TDispID;
  1979.     iMeth: Integer;
  1980.     cc: TCallConv;
  1981.     cArgs: Integer;
  1982.     wFlags: Word;
  1983.     vtReturn: TVarType;
  1984.   end;
  1985.  
  1986.   PMethodDataList = ^TMethodDataList;
  1987.   TMethodDataList = array[0..65535] of TMethodData;
  1988.  
  1989.   PInterfaceData = ^TInterfaceData;
  1990.   TInterfaceData = record
  1991.     pmethdata: PMethodDataList;
  1992.     cMembers: Integer;
  1993.   end;
  1994.  
  1995.   TRegKind = (REGKIND_DEFAULT, REGKIND_REGISTER, REGKIND_NONE);
  1996.  
  1997. { from OLEIDL.H }  
  1998. { IOleAdviseHolder interface }
  1999.  
  2000.   IOleAdviseHolder = interface(IUnknown)
  2001.     ['{00000111-0000-0000-C000-000000000046}']
  2002.     function Advise(const advise: IAdviseSink; out dwConnection: Longint): HResult;
  2003.       stdcall;
  2004.     function Unadvise(dwConnection: Longint): HResult; stdcall;
  2005.     function EnumAdvise(out enumAdvise: IEnumStatData): HResult; stdcall;
  2006.     function SendOnRename(const mk: IMoniker): HResult; stdcall;
  2007.     function SendOnSave: HResult; stdcall;
  2008.     function SendOnClose: HResult; stdcall;
  2009.   end;
  2010.  
  2011. { IOleCache interface }
  2012.  
  2013.   IOleCache = interface(IUnknown)
  2014.     ['{0000011E-0000-0000-C000-000000000046}']
  2015.     function Cache(const formatetc: TFormatEtc; advf: Longint;
  2016.       out dwConnection: Longint): HResult; stdcall;
  2017.     function Uncache(dwConnection: Longint): HResult; stdcall;
  2018.     function EnumCache(out enumStatData: IEnumStatData): HResult;
  2019.       stdcall;
  2020.     function InitCache(const dataObject: IDataObject): HResult; stdcall;
  2021.     function SetData(const formatetc: TFormatEtc; const medium: TStgMedium;
  2022.       fRelease: BOOL): HResult; stdcall;
  2023.   end;
  2024.  
  2025. { IOleCache2 interface }
  2026.  
  2027.   IOleCache2 = interface(IOleCache)
  2028.     ['{00000128-0000-0000-C000-000000000046}']
  2029.     function UpdateCache(const dataObject: IDataObject; grfUpdf: Longint;
  2030.       pReserved: Pointer): HResult; stdcall;
  2031.     function DiscardCache(dwDiscardOptions: Longint): HResult; stdcall;
  2032.   end;
  2033.  
  2034. { IOleCacheControl interface }
  2035.  
  2036.   IOleCacheControl = interface(IUnknown)
  2037.     ['{00000129-0000-0000-C000-000000000046}']
  2038.     function OnRun(const dataObject: IDataObject): HResult; stdcall;
  2039.     function OnStop: HResult; stdcall;
  2040.   end;
  2041.  
  2042. { IParseDisplayName interface }
  2043.  
  2044.   IParseDisplayName = interface(IUnknown)
  2045.     ['{0000011A-0000-0000-C000-000000000046}']
  2046.     function ParseDisplayName(const bc: IBindCtx; pszDisplayName: POleStr;
  2047.       out chEaten: Longint; out mkOut: IMoniker): HResult; stdcall;
  2048.   end;
  2049.  
  2050. { IOleContainer interface }
  2051.  
  2052.   IOleContainer = interface(IParseDisplayName)
  2053.     ['{0000011B-0000-0000-C000-000000000046}']
  2054.     function EnumObjects(grfFlags: Longint; out enum: IEnumUnknown): HResult;
  2055.       stdcall;
  2056.     function LockContainer(fLock: BOOL): HResult; stdcall;
  2057.   end;
  2058.  
  2059. { IOleClientSite interface }
  2060.  
  2061.   IOleClientSite = interface(IUnknown)
  2062.     ['{00000118-0000-0000-C000-000000000046}']
  2063.     function SaveObject: HResult; stdcall;
  2064.     function GetMoniker(dwAssign: Longint; dwWhichMoniker: Longint;
  2065.       out mk: IMoniker): HResult; stdcall;
  2066.     function GetContainer(out container: IOleContainer): HResult; stdcall;
  2067.     function ShowObject: HResult; stdcall;
  2068.     function OnShowWindow(fShow: BOOL): HResult; stdcall;
  2069.     function RequestNewObjectLayout: HResult; stdcall;
  2070.   end;
  2071.  
  2072. { IOleObject interface }
  2073.  
  2074.   IOleObject = interface(IUnknown)
  2075.     ['{00000112-0000-0000-C000-000000000046}']
  2076.     function SetClientSite(const clientSite: IOleClientSite): HResult;
  2077.       stdcall;
  2078.     function GetClientSite(out clientSite: IOleClientSite): HResult;
  2079.       stdcall;
  2080.     function SetHostNames(szContainerApp: POleStr;
  2081.       szContainerObj: POleStr): HResult; stdcall;
  2082.     function Close(dwSaveOption: Longint): HResult; stdcall;
  2083.     function SetMoniker(dwWhichMoniker: Longint; const mk: IMoniker): HResult;
  2084.       stdcall;
  2085.     function GetMoniker(dwAssign: Longint; dwWhichMoniker: Longint;
  2086.       out mk: IMoniker): HResult; stdcall;
  2087.     function InitFromData(const dataObject: IDataObject; fCreation: BOOL;
  2088.       dwReserved: Longint): HResult; stdcall;
  2089.     function GetClipboardData(dwReserved: Longint;
  2090.       out dataObject: IDataObject): HResult; stdcall;
  2091.     function DoVerb(iVerb: Longint; msg: PMsg; const activeSite: IOleClientSite;
  2092.       lindex: Longint; hwndParent: HWND; const posRect: TRect): HResult;
  2093.       stdcall;
  2094.     function EnumVerbs(out enumOleVerb: IEnumOleVerb): HResult; stdcall;
  2095.     function Update: HResult; stdcall;
  2096.     function IsUpToDate: HResult; stdcall;
  2097.     function GetUserClassID(out clsid: TCLSID): HResult; stdcall;
  2098.     function GetUserType(dwFormOfType: Longint; out pszUserType: POleStr): HResult;
  2099.       stdcall;
  2100.     function SetExtent(dwDrawAspect: Longint; const size: TPoint): HResult;
  2101.       stdcall;
  2102.     function GetExtent(dwDrawAspect: Longint; out size: TPoint): HResult;
  2103.       stdcall;
  2104.     function Advise(const advSink: IAdviseSink; out dwConnection: Longint): HResult;
  2105.       stdcall;
  2106.     function Unadvise(dwConnection: Longint): HResult; stdcall;
  2107.     function EnumAdvise(out enumAdvise: IEnumStatData): HResult; stdcall;
  2108.     function GetMiscStatus(dwAspect: Longint; out dwStatus: Longint): HResult;
  2109.       stdcall;
  2110.     function SetColorScheme(const logpal: TLogPalette): HResult; stdcall;
  2111.   end;
  2112.  
  2113. { OLE types }
  2114.  
  2115.   PObjectDescriptor = ^TObjectDescriptor;
  2116.   TObjectDescriptor = record
  2117.     cbSize: Longint;
  2118.     clsid: TCLSID;
  2119.     dwDrawAspect: Longint;
  2120.     size: TPoint;
  2121.     point: TPoint;
  2122.     dwStatus: Longint;
  2123.     dwFullUserTypeName: Longint;
  2124.     dwSrcOfCopy: Longint;
  2125.   end;
  2126.  
  2127.   PLinkSrcDescriptor = PObjectDescriptor;
  2128.   TLinkSrcDescriptor = TObjectDescriptor;
  2129.  
  2130. { IOleWindow interface }
  2131.  
  2132.   IOleWindow = interface(IUnknown)
  2133.     ['{00000114-0000-0000-C000-000000000046}']
  2134.     function GetWindow(out wnd: HWnd): HResult; stdcall;
  2135.     function ContextSensitiveHelp(fEnterMode: BOOL): HResult; stdcall;
  2136.   end;
  2137.  
  2138. { IOleLink interface }
  2139.  
  2140.   IOleLink = interface(IUnknown)
  2141.     ['{0000011D-0000-0000-C000-000000000046}']
  2142.     function SetUpdateOptions(dwUpdateOpt: Longint): HResult;
  2143.       stdcall;
  2144.     function GetUpdateOptions(out dwUpdateOpt: Longint): HResult; stdcall;
  2145.     function SetSourceMoniker(const mk: IMoniker; const clsid: TCLSID): HResult;
  2146.       stdcall;
  2147.     function GetSourceMoniker(out mk: IMoniker): HResult; stdcall;
  2148.     function SetSourceDisplayName(pszDisplayName: POleStr): HResult;
  2149.       stdcall;
  2150.     function GetSourceDisplayName(out pszDisplayName: POleStr): HResult;
  2151.       stdcall;
  2152.     function BindToSource(bindflags: Longint; const bc: IBindCtx): HResult;
  2153.       stdcall;
  2154.     function BindIfRunning: HResult; stdcall;
  2155.     function GetBoundSource(out unk: IUnknown): HResult; stdcall;
  2156.     function UnbindSource: HResult; stdcall;
  2157.     function Update(const bc: IBindCtx): HResult; stdcall;
  2158.   end;
  2159.  
  2160. { IOleItemContainer interface }
  2161.  
  2162.   IOleItemContainer = interface(IOleContainer)
  2163.     ['{0000011C-0000-0000-C000-000000000046}']
  2164.     function GetObject(pszItem: POleStr; dwSpeedNeeded: Longint;
  2165.       const bc: IBindCtx; const iid: TIID; out vObject): HResult; stdcall;
  2166.     function GetObjectStorage(pszItem: POleStr; const bc: IBindCtx;
  2167.       const iid: TIID; out vStorage): HResult; stdcall;
  2168.     function IsRunning(pszItem: POleStr): HResult; stdcall;
  2169.   end;
  2170.  
  2171. { IOleInPlaceUIWindow interface }
  2172.  
  2173.   IOleInPlaceUIWindow = interface(IOleWindow)
  2174.     ['{00000115-0000-0000-C000-000000000046}']
  2175.     function GetBorder(out rectBorder: TRect): HResult; stdcall;
  2176.     function RequestBorderSpace(const borderwidths: TRect): HResult; stdcall;
  2177.     function SetBorderSpace(pborderwidths: PRect): HResult; stdcall;
  2178.     function SetActiveObject(const activeObject: IOleInPlaceActiveObject;
  2179.       pszObjName: POleStr): HResult; stdcall;
  2180.   end;
  2181.  
  2182. { IOleInPlaceActiveObject interface }
  2183.  
  2184.   IOleInPlaceActiveObject = interface(IOleWindow)
  2185.     ['{00000117-0000-0000-C000-000000000046}']
  2186.     function TranslateAccelerator(var msg: TMsg): HResult; stdcall;
  2187.     function OnFrameWindowActivate(fActivate: BOOL): HResult; stdcall;
  2188.     function OnDocWindowActivate(fActivate: BOOL): HResult; stdcall;
  2189.     function ResizeBorder(const rcBorder: TRect; const uiWindow: IOleInPlaceUIWindow;
  2190.       fFrameWindow: BOOL): HResult; stdcall;
  2191.     function EnableModeless(fEnable: BOOL): HResult; stdcall;
  2192.   end;
  2193.  
  2194. { IOleInPlaceFrame interface }
  2195.  
  2196.   POleInPlaceFrameInfo = ^TOleInPlaceFrameInfo;
  2197.   TOleInPlaceFrameInfo = record
  2198.     cb: Integer;
  2199.     fMDIApp: BOOL;
  2200.     hwndFrame: HWND;
  2201.     haccel: HAccel;
  2202.     cAccelEntries: Integer;
  2203.   end;
  2204.  
  2205.   POleMenuGroupWidths = ^TOleMenuGroupWidths;
  2206.   TOleMenuGroupWidths = record
  2207.     width: array[0..5] of Longint;
  2208.   end;
  2209.  
  2210.   IOleInPlaceFrame = interface(IOleInPlaceUIWindow)
  2211.     ['{00000116-0000-0000-C000-000000000046}']
  2212.     function InsertMenus(hmenuShared: HMenu;
  2213.       var menuWidths: TOleMenuGroupWidths): HResult; stdcall;
  2214.     function SetMenu(hmenuShared: HMenu; holemenu: HMenu;
  2215.       hwndActiveObject: HWnd): HResult; stdcall;
  2216.     function RemoveMenus(hmenuShared: HMenu): HResult; stdcall;
  2217.     function SetStatusText(pszStatusText: POleStr): HResult; stdcall;
  2218.     function EnableModeless(fEnable: BOOL): HResult; stdcall;
  2219.     function TranslateAccelerator(var msg: TMsg; wID: Word): HResult; stdcall;
  2220.   end;
  2221.  
  2222. { IOleInPlaceObject interface }
  2223.  
  2224.   IOleInPlaceObject = interface(IOleWindow)
  2225.     ['{00000113-0000-0000-C000-000000000046}']
  2226.     function InPlaceDeactivate: HResult; stdcall;
  2227.     function UIDeactivate: HResult; stdcall;
  2228.     function SetObjectRects(const rcPosRect: TRect;
  2229.       const rcClipRect: TRect): HResult; stdcall;
  2230.     function ReactivateAndUndo: HResult; stdcall;
  2231.   end;
  2232.  
  2233. { IOleInPlaceSite interface }
  2234.  
  2235.   IOleInPlaceSite = interface(IOleWindow)
  2236.     ['{00000119-0000-0000-C000-000000000046}']
  2237.     function CanInPlaceActivate: HResult; stdcall;
  2238.     function OnInPlaceActivate: HResult; stdcall;
  2239.     function OnUIActivate: HResult; stdcall;
  2240.     function GetWindowContext(out frame: IOleInPlaceFrame;
  2241.       out doc: IOleInPlaceUIWindow; out rcPosRect: TRect;
  2242.       out rcClipRect: TRect; out frameInfo: TOleInPlaceFrameInfo): HResult;
  2243.       stdcall;
  2244.     function Scroll(scrollExtent: TPoint): HResult; stdcall;
  2245.     function OnUIDeactivate(fUndoable: BOOL): HResult; stdcall;
  2246.     function OnInPlaceDeactivate: HResult; stdcall;
  2247.     function DiscardUndoState: HResult; stdcall;
  2248.     function DeactivateAndUndo: HResult; stdcall;
  2249.     function OnPosRectChange(const rcPosRect: TRect): HResult; stdcall;
  2250.   end;
  2251.  
  2252. { IViewObject interface }
  2253.  
  2254.   TContinueFunc = function(dwContinue: Longint): BOOL stdcall;
  2255.  
  2256.   IViewObject = interface(IUnknown)
  2257.     ['{0000010D-0000-0000-C000-000000000046}']
  2258.     function Draw(dwDrawAspect: Longint; lindex: Longint; pvAspect: Pointer;
  2259.       ptd: PDVTargetDevice; hicTargetDev: HDC; hdcDraw: HDC;
  2260.       prcBounds: PRect; prcWBounds: PRect; fnContinue: TContinueFunc;
  2261.       dwContinue: Longint): HResult; stdcall;
  2262.     function GetColorSet(dwDrawAspect: Longint; lindex: Longint;
  2263.       pvAspect: Pointer; ptd: PDVTargetDevice; hicTargetDev: HDC;
  2264.       out colorSet: PLogPalette): HResult; stdcall;
  2265.     function Freeze(dwDrawAspect: Longint; lindex: Longint; pvAspect: Pointer;
  2266.       out dwFreeze: Longint): HResult; stdcall;
  2267.     function Unfreeze(dwFreeze: Longint): HResult; stdcall;
  2268.     function SetAdvise(aspects: Longint; advf: Longint;
  2269.       const advSink: IAdviseSink): HResult; stdcall;
  2270.     function GetAdvise(pAspects: PLongint; pAdvf: PLongint;
  2271.       out advSink: IAdviseSink): HResult; stdcall;
  2272.   end;
  2273.  
  2274. { IViewObject2 interface }
  2275.  
  2276.   IViewObject2 = interface(IViewObject)
  2277.     ['{00000127-0000-0000-C000-000000000046}']
  2278.     function GetExtent(dwDrawAspect: Longint; lindex: Longint;
  2279.       ptd: PDVTargetDevice; out size: TPoint): HResult; stdcall;
  2280.   end;
  2281.  
  2282. { IDropSource interface }
  2283.  
  2284.   IDropSource = interface(IUnknown)
  2285.     ['{00000121-0000-0000-C000-000000000046}']
  2286.     function QueryContinueDrag(fEscapePressed: BOOL;
  2287.       grfKeyState: Longint): HResult; stdcall;
  2288.     function GiveFeedback(dwEffect: Longint): HResult; stdcall;
  2289.   end;
  2290.  
  2291. { IDropTarget interface }
  2292.  
  2293.   IDropTarget = interface(IUnknown)
  2294.     ['{00000122-0000-0000-C000-000000000046}']
  2295.     function DragEnter(const dataObj: IDataObject; grfKeyState: Longint;
  2296.       pt: TPoint; var dwEffect: Longint): HResult; stdcall;
  2297.     function DragOver(grfKeyState: Longint; pt: TPoint;
  2298.       var dwEffect: Longint): HResult; stdcall;
  2299.     function DragLeave: HResult; stdcall;
  2300.     function Drop(const dataObj: IDataObject; grfKeyState: Longint; pt: TPoint;
  2301.       var dwEffect: Longint): HResult; stdcall;
  2302.   end;
  2303.  
  2304. { IEnumOleVerb interface }
  2305.  
  2306.   POleVerb = ^TOleVerb;
  2307.   TOleVerb = record
  2308.     lVerb: Longint;
  2309.     lpszVerbName: POleStr;
  2310.     fuFlags: Longint;
  2311.     grfAttribs: Longint;
  2312.   end;
  2313.  
  2314.   IEnumOleVerb = interface(IUnknown)
  2315.     ['{00000104-0000-0000-C000-000000000046}']
  2316.     function Next(celt: Longint; out elt;
  2317.       pceltFetched: PLongint): HResult; stdcall;
  2318.     function Skip(celt: Longint): HResult; stdcall;
  2319.     function Reset: HResult; stdcall;
  2320.     function Clone(out enm: IEnumOleVerb): HResult; stdcall;
  2321.   end;
  2322.  
  2323. { IOleControl interface }
  2324.  
  2325.   IOleControl = interface
  2326.     ['{B196B288-BAB4-101A-B69C-00AA00341D07}']
  2327.     function GetControlInfo(var ci: TControlInfo): HResult; stdcall;
  2328.     function OnMnemonic(msg: PMsg): HResult; stdcall;
  2329.     function OnAmbientPropertyChange(dispid: TDispID): HResult; stdcall;
  2330.     function FreezeEvents(bFreeze: BOOL): HResult; stdcall;
  2331.   end;
  2332.  
  2333. { IOleControlSite interface }
  2334.  
  2335.   IOleControlSite = interface
  2336.     ['{B196B289-BAB4-101A-B69C-00AA00341D07}']
  2337.     function OnControlInfoChanged: HResult; stdcall;
  2338.     function LockInPlaceActive(fLock: BOOL): HResult; stdcall;
  2339.     function GetExtendedControl(out disp: IDispatch): HResult; stdcall;
  2340.     function TransformCoords(var ptlHimetric: TPoint; var ptfContainer: TPointF;
  2341.       flags: Longint): HResult; stdcall;
  2342.     function TranslateAccelerator(msg: PMsg; grfModifiers: Longint): HResult;
  2343.        stdcall;
  2344.     function OnFocus(fGotFocus: BOOL): HResult; stdcall;
  2345.     function ShowPropertyFrame: HResult; stdcall;
  2346.   end;
  2347.  
  2348. { ISimpleFrameSite interface }
  2349.  
  2350.   ISimpleFrameSite = interface
  2351.     ['{742B0E01-14E6-101B-914E-00AA00300CAB}']
  2352.     function PreMessageFilter(wnd: HWnd; msg, wp, lp: Integer;
  2353.       out res: Integer; out Cookie: Longint): HResult;
  2354.       stdcall;
  2355.     function PostMessageFilter(wnd: HWnd; msg, wp, lp: Integer;
  2356.       out res: Integer; Cookie: Longint): HResult;
  2357.       stdcall;
  2358.   end;
  2359.  
  2360. { IObjectWithSite interface }
  2361.   IObjectWithSite = interface
  2362.     ['{FC4801A3-2BA9-11CF-A229-00AA003D7352}']
  2363.     function SetSite(const pUnkSite: IUnknown ):HResult; stdcall;
  2364.     function GetSite(const riid: TIID; out site: IUnknown):HResult; stdcall;
  2365.   end;
  2366.  
  2367. { IErrorLog interface }
  2368.  
  2369.   IErrorLog = interface
  2370.     ['{3127CA40-446E-11CE-8135-00AA004BB851}']
  2371.     function AddError(pszPropName: POleStr; pExcepInfo: PExcepInfo): HResult; stdcall;
  2372.   end;
  2373.  
  2374. { IPropertyBag interface }
  2375.  
  2376.   IPropertyBag = interface
  2377.     ['{55272A00-42CB-11CE-8135-00AA004BB851}']
  2378.     function Read(pszPropName: POleStr; var pvar: OleVariant;
  2379.       const pErrorLog: IErrorLog): HResult; stdcall;
  2380.     function Write(pszPropName: POleStr; const pvar: OleVariant): HResult; stdcall;
  2381.   end;
  2382.  
  2383. { IPersistPropertyBag interface }
  2384.  
  2385.   IPersistPropertyBag = interface(IPersist)
  2386.     ['{37D84F60-42CB-11CE-8135-00AA004BB851}']
  2387.     function InitNew: HResult; stdcall;
  2388.     function Load(const pPropBag: IPropertyBag;
  2389.       const pErrorLog: IErrorLog): HResult; stdcall;
  2390.     function Save(const pPropBag: IPropertyBag; fClearDirty: BOOL;
  2391.       fSaveAllProperties: BOOL): HResult; stdcall;
  2392.   end;
  2393.  
  2394. { IPersistStreamInit interface }
  2395.  
  2396.   IPersistStreamInit = interface(IPersistStream)
  2397.     ['{7FD52380-4E07-101B-AE2D-08002B2EC713}']
  2398.     function InitNew: HResult; stdcall;
  2399.   end;
  2400.  
  2401. { IPropertyNotifySink interface }
  2402.  
  2403.   IPropertyNotifySink = interface
  2404.     ['{9BFBBC02-EFF1-101A-84ED-00AA00341D07}']
  2405.     function OnChanged(dispid: TDispID): HResult; stdcall;
  2406.     function OnRequestEdit(dispid: TDispID): HResult; stdcall;
  2407.   end;
  2408.  
  2409. { IProvideClassInfo interface }
  2410.  
  2411.   IProvideClassInfo = interface
  2412.     ['{B196B283-BAB4-101A-B69C-00AA00341D07}']
  2413.     function GetClassInfo(out ti: ITypeInfo): HResult; stdcall;
  2414.   end;
  2415.  
  2416. { IConnectionPointContainer interface }
  2417.  
  2418.   IConnectionPointContainer = interface
  2419.     ['{B196B284-BAB4-101A-B69C-00AA00341D07}']
  2420.     function EnumConnectionPoints(out enum: IEnumConnectionPoints): HResult;
  2421.       stdcall;
  2422.     function FindConnectionPoint(const iid: TIID;
  2423.       out cp: IConnectionPoint): HResult; stdcall;
  2424.   end;
  2425.  
  2426. { IEnumConnectionPoints interface }
  2427.  
  2428.   IEnumConnectionPoints = interface
  2429.     ['{B196B285-BAB4-101A-B69C-00AA00341D07}']
  2430.     function Next(celt: Longint; out elt;
  2431.       pceltFetched: PLongint): HResult; stdcall;
  2432.     function Skip(celt: Longint): HResult; stdcall;
  2433.     function Reset: HResult; stdcall;
  2434.     function Clone(out enum: IEnumConnectionPoints): HResult;
  2435.       stdcall;
  2436.   end;
  2437.  
  2438. { IConnectionPoint interface }
  2439.  
  2440.   IConnectionPoint = interface
  2441.     ['{B196B286-BAB4-101A-B69C-00AA00341D07}']
  2442.     function GetConnectionInterface(out iid: TIID): HResult; stdcall;
  2443.     function GetConnectionPointContainer(out cpc: IConnectionPointContainer): HResult;
  2444.       stdcall;
  2445.     function Advise(const unkSink: IUnknown; out dwCookie: Longint): HResult; stdcall;
  2446.     function Unadvise(dwCookie: Longint): HResult; stdcall;
  2447.     function EnumConnections(out enum: IEnumConnections): HResult; stdcall;
  2448.   end;
  2449.  
  2450. { from OCIDL.H }
  2451. { TConnectData structure }
  2452.  
  2453.   PConnectData = ^TConnectData;
  2454.   TConnectData = record
  2455.     pUnk: IUnknown;
  2456.     dwCookie: Longint;
  2457.   end;
  2458.  
  2459. { IEnumConnections interface }
  2460.  
  2461.   IEnumConnections = interface
  2462.     ['{B196B287-BAB4-101A-B69C-00AA00341D07}']
  2463.     function Next(celt: Longint; out elt;
  2464.       pceltFetched: PLongint): HResult; stdcall;
  2465.     function Skip(celt: Longint): HResult; stdcall;
  2466.     function Reset: HResult; stdcall;
  2467.     function Clone(out enum: IEnumConnections): HResult; stdcall;
  2468.   end;
  2469.  
  2470. { TLicInfo structure }
  2471.  
  2472.   PLicInfo = ^TLicInfo;
  2473.   TLicInfo = record
  2474.     cbLicInfo: Longint;
  2475.     fRuntimeKeyAvail: BOOL;
  2476.     fLicVerified: BOOL;
  2477.   end;
  2478.  
  2479. { IClassFactory2 interface }
  2480.  
  2481.   IClassFactory2 = interface(IClassFactory)
  2482.     ['{B196B28F-BAB4-101A-B69C-00AA00341D07}']
  2483.     function GetLicInfo(var licInfo: TLicInfo): HResult; stdcall;
  2484.     function RequestLicKey(dwResrved: Longint; out bstrKey: WideString): HResult;
  2485.       stdcall;
  2486.     function CreateInstanceLic(const unkOuter: IUnknown; const unkReserved: IUnknown;
  2487.       const iid: TIID; const bstrKey: WideString; out vObject): HResult; stdcall;
  2488.   end;
  2489.  
  2490. { TCAUUID structure - a counted array of TGUID }
  2491.  
  2492.   PGUIDList = ^TGUIDList;
  2493.   TGUIDList = array[0..65535] of TGUID;
  2494.  
  2495.   PCAGUID = ^TCAGUID;
  2496.   TCAGUID = record
  2497.     cElems: Longint;
  2498.     pElems: PGUIDList;
  2499.   end;
  2500.  
  2501. { TCAPOleStr structure - a counted array of POleStr }
  2502.  
  2503.   PCAPOleStr = ^TCAPOleStr;
  2504.   TCAPOleStr = record
  2505.     cElems: Longint;
  2506.     pElems: POleStrList;
  2507.   end;
  2508.  
  2509. { TCALongint - a counted array of Longint }
  2510.  
  2511.   PLongintList = ^TLongintList;
  2512.   TLongintList = array[0..65535] of Longint;
  2513.  
  2514.   PCALongint = ^TCALongint;
  2515.   TCALongint = record
  2516.     cElems: Longint;
  2517.     pElems: PLongintList;
  2518.   end;
  2519.  
  2520. { from OLECTL.H }
  2521. { TOCPFIParams - parameters for OleCreatePropertyFrameIndirect }
  2522.  
  2523.   POCPFIParams = ^TOCPFIParams;
  2524.   TOCPFIParams = record
  2525.     cbStructSize: Longint;
  2526.     hWndOwner: HWnd;
  2527.     x: Integer;
  2528.     y: Integer;
  2529.     lpszCaption: POleStr;
  2530.     cObjects: Longint;
  2531.     pObjects: Pointer;
  2532.     cPages: Longint;
  2533.     pPages: Pointer;
  2534.     lcid: TLCID;
  2535.     dispidInitialProperty: TDispID;
  2536.   end;
  2537.   
  2538. { from OCIDL.H }
  2539. { TPropPageInfo structure - information about a property page }
  2540.  
  2541.   PPropPageInfo = ^TPropPageInfo;
  2542.   TPropPageInfo = record
  2543.     cb: Longint;
  2544.     pszTitle: POleStr;
  2545.     size: TSize;
  2546.     pszDocString: POleStr;
  2547.     pszHelpFile: POleStr;
  2548.     dwHelpContext: Longint;
  2549.   end;
  2550.  
  2551. { ISpecifyPropertyPages interface }
  2552.  
  2553.   ISpecifyPropertyPages = interface
  2554.     ['{B196B28B-BAB4-101A-B69C-00AA00341D07}']
  2555.     function GetPages(out pages: TCAGUID): HResult; stdcall;
  2556.   end;
  2557.  
  2558. { IPerPropertyBrowsing interface }
  2559.  
  2560.   IPerPropertyBrowsing = interface
  2561.     ['{376BD3AA-3845-101B-84ED-08002B2EC713}']
  2562.     function GetDisplayString(dispid: TDispID; out bstr: WideString): HResult;
  2563.       stdcall;
  2564.     function MapPropertyToPage(dispid: TDispID; out clsid: TCLSID): HResult;
  2565.       stdcall;
  2566.     function GetPredefinedStrings(dispid: TDispID; out caStringsOut: TCAPOleStr;
  2567.       out caCookiesOut: TCALongint): HResult; stdcall;
  2568.     function GetPredefinedValue(dispid: TDispID; dwCookie: Longint;
  2569.       out varOut: OleVariant): HResult; stdcall;
  2570.   end;
  2571.  
  2572. { IPropertyPageSite interface }
  2573.  
  2574.   IPropertyPageSite = interface
  2575.     ['{B196B28C-BAB4-101A-B69C-00AA00341D07}']
  2576.     function OnStatusChange(flags: Longint): HResult; stdcall;
  2577.     function GetLocaleID(out localeID: TLCID): HResult; stdcall;
  2578.     function GetPageContainer(out unk: IUnknown): HResult; stdcall;
  2579.     function TranslateAccelerator(msg: PMsg): HResult; stdcall;
  2580.   end;
  2581.  
  2582. { IPropertyPage interface }
  2583.  
  2584.   IPropertyPage = interface
  2585.     ['{B196B28D-BAB4-101A-B69C-00AA00341D07}']
  2586.     function SetPageSite(const pageSite: IPropertyPageSite): HResult; stdcall;
  2587.     function Activate(hwndParent: HWnd; const rc: TRect; bModal: BOOL): HResult;
  2588.       stdcall;
  2589.     function Deactivate: HResult; stdcall;
  2590.     function GetPageInfo(out pageInfo: TPropPageInfo): HResult; stdcall;
  2591.     function SetObjects(cObjects: Longint; pUnkList: PUnknownList): HResult; stdcall;
  2592.     function Show(nCmdShow: Integer): HResult; stdcall;
  2593.     function Move(const rect: TRect): HResult; stdcall;
  2594.     function IsPageDirty: HResult; stdcall;
  2595.     function Apply: HResult; stdcall;
  2596.     function Help(pszHelpDir: POleStr): HResult; stdcall;
  2597.     function TranslateAccelerator(msg: PMsg): HResult; stdcall;
  2598.   end;
  2599.  
  2600. { IPropertyPage2 interface }
  2601.  
  2602.   IPropertyPage2 = interface(IPropertyPage)
  2603.     ['{01E44665-24AC-101B-84ED-08002B2EC713}']
  2604.     function EditProperty(dispid: TDispID): HResult; stdcall;
  2605.   end;
  2606.  
  2607. { IFont interface }
  2608.  
  2609.   IFont = interface
  2610.     ['{BEF6E002-A874-101A-8BBA-00AA00300CAB}']
  2611.     function get_Name(out name: WideString): HResult; stdcall;
  2612.     function put_Name(name: WideString): HResult; stdcall;
  2613.     function get_Size(out size: Currency): HResult; stdcall;
  2614.     function put_Size(size: Currency): HResult; stdcall;
  2615.     function get_Bold(out bold: BOOL): HResult; stdcall;
  2616.     function put_Bold(bold: BOOL): HResult; stdcall;
  2617.     function get_Italic(out italic: BOOL): HResult; stdcall;
  2618.     function put_Italic(italic: BOOL): HResult; stdcall;
  2619.     function get_Underline(out underline: BOOL): HResult; stdcall;
  2620.     function put_Underline(underline: BOOL): HResult; stdcall;
  2621.     function get_Strikethrough(out strikethrough: BOOL): HResult; stdcall;
  2622.     function put_Strikethrough(strikethrough: BOOL): HResult; stdcall;
  2623.     function get_Weight(out weight: Smallint): HResult; stdcall;
  2624.     function put_Weight(weight: Smallint): HResult; stdcall;
  2625.     function get_Charset(out charset: Smallint): HResult; stdcall;
  2626.     function put_Charset(charset: Smallint): HResult; stdcall;
  2627.     function get_hFont(out font: HFont): HResult; stdcall;
  2628.     function Clone(out font: IFont): HResult; stdcall;
  2629.     function IsEqual(const fontOther: IFont): HResult; stdcall;
  2630.     function SetRatio(cyLogical, cyHimetric: Longint): HResult; stdcall;
  2631.     function QueryTextMetrics(out tm: TTextMetricOle): HResult; stdcall;
  2632.     function AddRefHfont(font: HFont): HResult; stdcall;
  2633.     function ReleaseHfont(font: HFont): HResult; stdcall;
  2634.   end;
  2635.  
  2636. { Font dispatch interface }
  2637.  
  2638.   Font = interface(IDispatch)
  2639.     ['{BEF6E003-A874-101A-8BBA-00AA00300CAB}']
  2640.   end;
  2641.  
  2642.   IFontDisp = Font;
  2643.  
  2644.   PSOleAuthenticationService = ^TSOleAuthenticationService;
  2645.   TSOleAuthenticationService = record
  2646.     dwAuthnSvc: Longint;
  2647.     dwAuthzSvc: Longint;
  2648.     pPrincipalName: POleStr;
  2649.     hr: HResult;
  2650.   end;
  2651.  
  2652. { from OLECTL.H }
  2653. { TFontDesc structure }
  2654.  
  2655.   PFontDesc = ^TFontDesc;
  2656.   TFontDesc = record
  2657.     cbSizeofstruct: Integer;
  2658.     lpstrName: POleStr;
  2659.     cySize: Currency;
  2660.     sWeight: Smallint;
  2661.     sCharset: Smallint;
  2662.     fItalic: BOOL;
  2663.     fUnderline: BOOL;
  2664.     fStrikethrough: BOOL;
  2665.   end;
  2666.  
  2667. { from OCIDL.H }
  2668. { IPicture interface }
  2669.  
  2670.   IPicture = interface
  2671.     ['{7BF80980-BF32-101A-8BBB-00AA00300CAB}']
  2672.     function get_Handle(out handle: OLE_HANDLE): HResult;  stdcall;
  2673.     function get_hPal(out handle: OLE_HANDLE): HResult; stdcall;
  2674.     function get_Type(out typ: Smallint): HResult; stdcall;
  2675.     function get_Width(out width: OLE_XSIZE_HIMETRIC): HResult; stdcall;
  2676.     function get_Height(out height: OLE_YSIZE_HIMETRIC): HResult; stdcall;
  2677.     function Render(dc: HDC; x, y, cx, cy: Longint;
  2678.       xSrc: OLE_XPOS_HIMETRIC; ySrc: OLE_YPOS_HIMETRIC;
  2679.       cxSrc: OLE_XSIZE_HIMETRIC; cySrc: OLE_YSIZE_HIMETRIC;
  2680.       const rcWBounds: TRect): HResult; stdcall;
  2681.     function set_hPal(hpal: OLE_HANDLE): HResult; stdcall;
  2682.     function get_CurDC(out dcOut: HDC): HResult; stdcall;
  2683.     function SelectPicture(dcIn: HDC; out hdcOut: HDC;
  2684.       out bmpOut: OLE_HANDLE): HResult; stdcall;
  2685.     function get_KeepOriginalFormat(out fkeep: BOOL): HResult; stdcall;
  2686.     function put_KeepOriginalFormat(fkeep: BOOL): HResult; stdcall;
  2687.     function PictureChanged: HResult; stdcall;
  2688.     function SaveAsFile(const stream: IStream; fSaveMemCopy: BOOL;
  2689.       out cbSize: Longint): HResult; stdcall;
  2690.     function get_Attributes(out dwAttr: Longint): HResult; stdcall;
  2691.   end;
  2692.  
  2693. { Picture dispatch interface }
  2694.  
  2695.   Picture = interface(IDispatch)
  2696.     ['{7BF80981-BF32-101A-8BBB-00AA00300CAB}']
  2697.   end;
  2698.  
  2699.   IPictureDisp = Picture;
  2700.  
  2701. { from OLECTL.H }
  2702. { TPictDesc structure }
  2703.  
  2704.   PPictDesc = ^TPictDesc;
  2705.   TPictDesc = record
  2706.     cbSizeofstruct: Integer;
  2707.     picType: Integer;
  2708.     case Integer of
  2709.       PICTYPE_BITMAP: (
  2710.   hbitmap: THandle;       { Bitmap }
  2711.   hpal: THandle);         { Accompanying palette }
  2712.       PICTYPE_METAFILE: (
  2713.   hMeta: THandle;         { Metafile }
  2714.   xExt, yExt: Integer);   { Extent }
  2715.       PICTYPE_ICON: (
  2716.   hIcon: THandle);        { Icon }
  2717.       PICTYPE_ENHMETAFILE: (
  2718.   hemf: THandle);         { Enhanced Metafile }
  2719.   end;
  2720.  
  2721. { The following ActiveDoc interfaces come from DocObj.idl }
  2722.  
  2723.   IOleDocumentView = interface(IUnknown)
  2724.     ['{b722bcc6-4e68-101b-a2bc-00aa00404770}']
  2725.     function SetInPlaceSite(Site: IOleInPlaceSite):HResult; stdcall;
  2726.     function GetInPlaceSite(out Site: IOleInPlaceSite):HResult; stdcall;
  2727.     function GetDocument(out P: IUnknown):HResult; stdcall;
  2728.     function SetRect(const View: TRECT):HResult; stdcall;
  2729.     function GetRect(var View: TRECT):HResult; stdcall;
  2730.     function SetRectComplex(const View, HScroll, VScroll, SizeBox):HResult; stdcall;
  2731.     function Show(fShow: BOOL):HResult; stdcall;
  2732.     function UIActivate(fUIActivate: BOOL):HResult; stdcall;
  2733.     function Open:HResult; stdcall;
  2734.     function CloseView(dwReserved: DWORD):HResult; stdcall;
  2735.     function SaveViewState(pstm: IStream):HResult; stdcall;
  2736.     function ApplyViewState(pstm: IStream):HResult; stdcall;
  2737.     function Clone(NewSite: IOleInPlaceSite; out NewView: IOleDocumentView):HResult; stdcall;
  2738.   end;
  2739.  
  2740.   IEnumOleDocumentViews = interface(IUnknown)
  2741.     ['{b722bcc8-4e68-101b-a2bc-00aa00404770}']
  2742.     function Next(Count: Longint; out View: IOleDocumentView; var Fetched: Longint):HResult; stdcall;
  2743.     function Skip(Count: Longint):HResult; stdcall;
  2744.     function Reset:HResult; stdcall;
  2745.     function Clone(out Enum: IEnumOleDocumentViews):HResult; stdcall;
  2746.   end;
  2747.  
  2748.   IOleDocument = interface(IUnknown)
  2749.     ['{b722bcc5-4e68-101b-a2bc-00aa00404770}']
  2750.     function CreateView(Site: IOleInPlaceSite; Stream: IStream; rsrvd: DWORD;
  2751.       out View: IOleDocumentView):HResult; stdcall;
  2752.     function GetDocMiscStatus(var Status: DWORD):HResult; stdcall;
  2753.     function EnumViews(out Enum: IEnumOleDocumentViews;
  2754.       out View: IOleDocumentView):HResult; stdcall;
  2755.   end;
  2756.  
  2757.   IOleDocumentSite = interface(IUnknown)
  2758.     ['{b722bcc7-4e68-101b-a2bc-00aa00404770}']
  2759.     function ActivateMe(View: IOleDocumentView): HRESULT; stdcall;
  2760.   end;
  2761.  
  2762.   IContinueCallback = interface(IUnknown)
  2763.     ['{b722bcca-4e68-101b-a2bc-00aa00404770}']
  2764.     function Continue: HResult; stdcall;
  2765.     function ContinuePrinting( nCntPrinted, nCurPage: Longint;
  2766.       PrintStatus: PWideChar): HResult; stdcall;
  2767.   end;
  2768.  
  2769. {!! From servprov.idl: }
  2770.  
  2771.   IServiceProvider = interface(IUnknown)
  2772.     ['{6d5140c1-7436-11ce-8034-00aa006009fa}']
  2773.     function QueryService(const rsid, iid: TGuid; out Obj): HResult; stdcall;
  2774.   end;
  2775.  
  2776.  
  2777. const
  2778.   PRINTFLAG_MAYBOTHERUSER         = 1;
  2779.   PRINTFLAG_PROMPTUSER            = 2;
  2780.   PRINTFLAG_USERMAYCHANGEPRINTER  = 4;
  2781.   PRINTFLAG_RECOMPOSETODEVICE     = 8;
  2782.   PRINTFLAG_DONTACTUALLYPRINT     = 16;
  2783.   PRINTFLAG_FORCEPROPERTIES       = 32;
  2784.   PRINTFLAG_PRINTTOFILE           = 64;
  2785.  
  2786.   PAGESET_TOLASTPAGE              = Cardinal(-1);
  2787.  
  2788. type
  2789.   PPageRange = ^TPageRange;
  2790.   TPageRange = record
  2791.     nFromPage: Longint;
  2792.     nToPage: Longint;
  2793.   end;
  2794.  
  2795.   PPageSet = ^TPageSet;
  2796.   TPageSet = record
  2797.     cbStruct: Cardinal;
  2798.     fOddPages: BOOL;
  2799.     fEvenPages: BOOL;
  2800.     cPageRange: Cardinal;
  2801.     rgPages: array [0..0] of TPageRange;
  2802.   end;
  2803.  
  2804.   IPrint = interface(IUnknown)
  2805.     ['{b722bcc9-4e68-101b-a2bc-00aa00404770}']
  2806.     function SetInitialPageNum(nFirstPage: Longint): HResult; stdcall;
  2807.     function GetPageInfo(var pnFirstPage, pcPages: Longint): HResult; stdcall;
  2808.     function Print(grfFlags: DWORD; var td: TDVTARGETDEVICE;
  2809.       PageSet: PPageSet; stgmOptions: PStgMedium; Callback: IContinueCallback;
  2810.       FirstPage: Longint; pcPagesPrinted, pnLastPage: PLongint): HResult; stdcall;
  2811.   end;
  2812.  
  2813. const
  2814.   OLECMDIDF_REFRESH_NORMAL     = 0;
  2815.   OLECMDIDF_REFRESH_IFEXPIRED  = 1;
  2816.   OLECMDIDF_REFRESH_CONTINUE   = 2;
  2817.   OLECMDIDF_REFRESH_COMPLETELY = 3;
  2818.  
  2819.   OLECMDF_SUPPORTED       = 1;
  2820.   OLECMDF_ENABLED         = 2;
  2821.   OLECMDF_LATCHED         = 4;
  2822.   OLECMDF_NINCHED         = 8;
  2823.  
  2824.   OLECMDTEXTF_NONE        = 0;
  2825.   OLECMDTEXTF_NAME        = 1;
  2826.   OLECMDTEXTF_STATUS      = 2;
  2827.  
  2828.   OLECMDEXECOPT_DODEFAULT         = 0;
  2829.   OLECMDEXECOPT_PROMPTUSER        = 1;
  2830.   OLECMDEXECOPT_DONTPROMPTUSER    = 2;
  2831.   OLECMDEXECOPT_SHOWHELP          = 3;
  2832.  
  2833.   OLECMDID_OPEN                           = 1;
  2834.   OLECMDID_NEW                            = 2;
  2835.   OLECMDID_SAVE                           = 3;
  2836.   OLECMDID_SAVEAS                         = 4;
  2837.   OLECMDID_SAVECOPYAS                     = 5;
  2838.   OLECMDID_PRINT                          = 6;
  2839.   OLECMDID_PRINTPREVIEW                   = 7;
  2840.   OLECMDID_PAGESETUP                      = 8;
  2841.   OLECMDID_SPELL                          = 9;
  2842.   OLECMDID_PROPERTIES                     = 10;
  2843.   OLECMDID_CUT                            = 11;
  2844.   OLECMDID_COPY                           = 12;
  2845.   OLECMDID_PASTE                          = 13;
  2846.   OLECMDID_PASTESPECIAL                   = 14;
  2847.   OLECMDID_UNDO                           = 15;
  2848.   OLECMDID_REDO                           = 16;
  2849.   OLECMDID_SELECTALL                      = 17;
  2850.   OLECMDID_CLEARSELECTION                 = 18;
  2851.   OLECMDID_ZOOM                           = 19;
  2852.   OLECMDID_GETZOOMRANGE                   = 20;
  2853.   OLECMDID_UPDATECOMMANDS                 = 21;
  2854.   OLECMDID_REFRESH                        = 22;
  2855.   OLECMDID_STOP                           = 23;
  2856.   OLECMDID_HIDETOOLBARS                   = 24;
  2857.   OLECMDID_SETPROGRESSMAX                 = 25;
  2858.   OLECMDID_SETPROGRESSPOS                 = 26;
  2859.   OLECMDID_SETPROGRESSTEXT                = 27;
  2860.   OLECMDID_SETTITLE                       = 28;
  2861.   OLECMDID_SETDOWNLOADSTATE               = 29;
  2862.   OLECMDID_STOPDOWNLOAD                   = 30;
  2863.     // OLECMDID_STOPDOWNLOAD is supported for QueryStatus Only
  2864.  
  2865. // error codes
  2866.   OLECMDERR_E_FIRST           = OLE_E_LAST+1;
  2867.   OLECMDERR_E_NOTSUPPORTED    = OLECMDERR_E_FIRST;
  2868.   OLECMDERR_E_DISABLED        = OLECMDERR_E_FIRST+1;
  2869.   OLECMDERR_E_NOHELP          = OLECMDERR_E_FIRST+2;
  2870.   OLECMDERR_E_CANCELED        = OLECMDERR_E_FIRST+3;
  2871.   OLECMDERR_E_UNKNOWNGROUP    = OLECMDERR_E_FIRST+4;
  2872.  
  2873.   MSOCMDERR_E_FIRST           = OLECMDERR_E_FIRST;
  2874.   MSOCMDERR_E_NOTSUPPORTED    = OLECMDERR_E_NOTSUPPORTED;
  2875.   MSOCMDERR_E_DISABLED        = OLECMDERR_E_DISABLED;
  2876.   MSOCMDERR_E_NOHELP          = OLECMDERR_E_NOHELP;
  2877.   MSOCMDERR_E_CANCELED        = OLECMDERR_E_CANCELED;
  2878.   MSOCMDERR_E_UNKNOWNGROUP    = OLECMDERR_E_UNKNOWNGROUP;
  2879.  
  2880. type
  2881.  
  2882.   POleCmd = ^TOleCmd;
  2883.   TOleCmd = record
  2884.     cmdID: Cardinal;
  2885.     cmdf: Longint;
  2886.   end;
  2887.  
  2888.   POleCmdText = ^TOleCmdText;
  2889.   TOleCmdText = record
  2890.     cmdtextf: Longint;
  2891.     cwActual: Cardinal;
  2892.     cwBuf: Cardinal;         // size in wide chars of the buffer for text
  2893.     rgwz: array [0..0] of WideChar; // Array into which callee writes the text
  2894.   end;
  2895.  
  2896.   IOleCommandTarget = interface(IUnknown)
  2897.     ['{b722bccb-4e68-101b-a2bc-00aa00404770}']
  2898.     function QueryStatus(CmdGroup: PGUID; cCmds: Cardinal;
  2899.       prgCmds: POleCmd; CmdText: POleCmdText): HResult; stdcall;
  2900.     function Exec(CmdGroup: PGUID; nCmdID, nCmdexecopt: DWORD;
  2901.       const vaIn: OleVariant; var vaOut: OleVariant): HResult; stdcall;
  2902.   end;
  2903.  
  2904. { from designer.h}
  2905.  
  2906. const
  2907.   CATID_Designer: TGUID = '{4EB304D0-7555-11cf-A0C2-00AA0062BE57}';
  2908.  
  2909. type
  2910.   IActiveDesigner = interface
  2911.     ['{51AAE3E0-7486-11cf-A0C2-00AA0062BE57}']
  2912.     function GetRuntimeClassID(var clsid: TGUID): HResult; stdcall;
  2913.     function GetRuntimeMiscStatusFlags(var dwMiscFlags: DWORD): HResult; stdcall;
  2914.     function QueryPersistenceInterface(const iid: TGUID): HResult; stdcall;
  2915.     function SaveRuntimeState(const iidItf: TGUID; const iidObj: TGUID; Obj: IUnknown): HResult; stdcall;
  2916.     function GetExtensibilityObject(var ppvObjOut: IDispatch): HResult; stdcall;
  2917.   end;
  2918.  
  2919.  
  2920. { from webdc.h }
  2921. const
  2922.   CATID_WebDesigntimeControl: TGUID = '{73cef3dd-ae85-11cf-a406-00aa00c00940}';
  2923.  
  2924. type
  2925.   IPersistTextStream = interface(IPersistStreamInit)
  2926.     ['{56223fe3-d397-11cf-a42e-00aa00c00940}']
  2927.   end;
  2928.  
  2929.   IProvideRuntimeText = interface
  2930.     ['{56223FE1-D397-11cf-A42E-00AA00C00940}']
  2931.     function GetRuntimeText( var strRuntimeText: TBSTR ): HResult; stdcall;
  2932.   end;
  2933.  
  2934. const
  2935. { from CGUID.H }
  2936. { Standard GUIDs }
  2937.  
  2938.   GUID_NULL: TGUID = '{00000000-0000-0000-0000-000000000000}';
  2939.   GUID_OLE_COLOR: TGUID = '{66504301-BE0F-101A-8BBB-00AA00300CAB}';
  2940.  
  2941. { Additional GUIDs }
  2942.  
  2943.   IID_IRpcChannel: TGUID = (
  2944.     D1:$00000004;D2:$0000;D3:$0000;D4:($C0,$00,$00,$00,$00,$00,$00,$46));
  2945.   IID_IRpcStub: TGUID = (
  2946.     D1:$00000005;D2:$0000;D3:$0000;D4:($C0,$00,$00,$00,$00,$00,$00,$46));
  2947.   IID_IStubManager: TGUID = (
  2948.     D1:$00000006;D2:$0000;D3:$0000;D4:($C0,$00,$00,$00,$00,$00,$00,$46));
  2949.   IID_IRpcProxy: TGUID = (
  2950.     D1:$00000007;D2:$0000;D3:$0000;D4:($C0,$00,$00,$00,$00,$00,$00,$46));
  2951.   IID_IProxyManager: TGUID = (
  2952.     D1:$00000008;D2:$0000;D3:$0000;D4:($C0,$00,$00,$00,$00,$00,$00,$46));
  2953.   IID_IPSFactory: TGUID = (
  2954.     D1:$00000009;D2:$0000;D3:$0000;D4:($C0,$00,$00,$00,$00,$00,$00,$46));
  2955.   IID_IInternalMoniker: TGUID = (
  2956.     D1:$00000011;D2:$0000;D3:$0000;D4:($C0,$00,$00,$00,$00,$00,$00,$46));
  2957.   CLSID_StdMarshal: TGUID = (
  2958.     D1:$00000017;D2:$0000;D3:$0000;D4:($C0,$00,$00,$00,$00,$00,$00,$46));
  2959.   IID_IEnumGeneric: TGUID = (
  2960.     D1:$00000106;D2:$0000;D3:$0000;D4:($C0,$00,$00,$00,$00,$00,$00,$46));
  2961.   IID_IEnumHolder: TGUID = (
  2962.     D1:$00000107;D2:$0000;D3:$0000;D4:($C0,$00,$00,$00,$00,$00,$00,$46));
  2963.   IID_IEnumCallback: TGUID = (
  2964.     D1:$00000108;D2:$0000;D3:$0000;D4:($C0,$00,$00,$00,$00,$00,$00,$46));
  2965.   IID_IOleManager: TGUID = (
  2966.     D1:$0000011F;D2:$0000;D3:$0000;D4:($C0,$00,$00,$00,$00,$00,$00,$46));
  2967.   IID_IOlePresObj: TGUID = (
  2968.     D1:$00000120;D2:$0000;D3:$0000;D4:($C0,$00,$00,$00,$00,$00,$00,$46));
  2969.   IID_IDebug: TGUID = (
  2970.     D1:$00000123;D2:$0000;D3:$0000;D4:($C0,$00,$00,$00,$00,$00,$00,$46));
  2971.   IID_IDebugStream: TGUID = (
  2972.     D1:$00000124;D2:$0000;D3:$0000;D4:($C0,$00,$00,$00,$00,$00,$00,$46));
  2973.  
  2974. { Standard class IDs }
  2975.  
  2976.   CLSID_CFontPropPage: TGUID = (
  2977.     D1:$2542f180;D2:$3532;D3:$1069;D4:($a2,$cd,$00,$aa,$00,$34,$b5,$0b));
  2978.   CLSID_CColorPropPage: TGUID = (
  2979.     D1:$ddf5a600;D2:$b9c0;D3:$101a;D4:($af,$1a,$00,$aa,$00,$34,$b5,$0b));
  2980.   CLSID_CPicturePropPage: TGUID = (
  2981.     D1:$fc7af71d;D2:$fc74;D3:$101a;D4:($84,$ed,$08,$00,$2b,$2e,$c7,$13));
  2982.   CLSID_PersistPropset: TGUID = (
  2983.     D1:$fb8f0821;D2:$0164;D3:$101b;D4:($84,$ed,$08,$00,$2b,$2e,$c7,$13));
  2984.   CLSID_ConvertVBX: TGUID = (
  2985.     D1:$fb8f0822;D2:$0164;D3:$101b;D4:($84,$ed,$08,$00,$2b,$2e,$c7,$13));
  2986.   CLSID_StdFont: TGUID = (
  2987.     D1:$fb8f0823;D2:$0164;D3:$101b;D4:($84,$ed,$08,$00,$2b,$2e,$c7,$13));
  2988.   CLSID_StdPicture: TGUID = (
  2989.     D1:$fb8f0824;D2:$0164;D3:$101b;D4:($84,$ed,$08,$00,$2b,$2e,$c7,$13));
  2990.  
  2991. { from comcat.h }
  2992. { COM Category Manager Interfaces }
  2993. type
  2994.   IEnumGUID = interface;
  2995.   IEnumCATEGORYINFO = interface;
  2996.   ICatRegister = interface;
  2997.   ICatInformation = interface;
  2998.  
  2999.   PCATEGORYINFO = ^TCATEGORYINFO;
  3000.   TCATEGORYINFO = record
  3001.     catid: TGUID;
  3002.     lcid: UINT;
  3003.     szDescription: array[0..127] of WideChar;
  3004.   end;
  3005.  
  3006.   IEnumGUID = interface(IUnknown)
  3007.     ['{0002E000-0000-0000-C000-000000000046}']
  3008.     function Next(celt: UINT; out rgelt: TGUID; out pceltFetched: UINT): HResult; stdcall;
  3009.     function Skip(celt: UINT): HResult; stdcall;
  3010.     function Reset: HResult; stdcall;
  3011.     function Clone(out ppenum: IEnumGUID): HResult; stdcall;
  3012.   end;
  3013.  
  3014.   IEnumCATEGORYINFO = interface(IUnknown)
  3015.     ['{0002E011-0000-0000-C000-000000000046}']
  3016.     function Next(celt: UINT; out rgelt: TCATEGORYINFO; out pceltFetched: UINT): HResult; stdcall;
  3017.     function Skip(celt: UINT): HResult; stdcall;
  3018.     function Reset: HResult; stdcall;
  3019.     function Clone(out ppenum: IEnumCATEGORYINFO): HResult; stdcall;
  3020.   end;
  3021.  
  3022.   ICatRegister = interface(IUnknown)
  3023.     ['{0002E012-0000-0000-C000-000000000046}']
  3024.     function RegisterCategories(cCategories: UINT; rgCategoryInfo: PCATEGORYINFO): HResult; stdcall;
  3025.     function UnRegisterCategories(cCategories: UINT; rgcatid: Pointer): HResult; stdcall;
  3026.     function RegisterClassImplCategories(const rclsid: TGUID; cCategories: UINT; rgcatid: Pointer): HResult; stdcall;
  3027.     function UnRegisterClassImplCategories(const rclsid: TGUID; cCategories: UINT; rgcatid: Pointer): HResult; stdcall;
  3028.     function RegisterClassReqCategories(const rclsid: TGUID; cCategories: UINT; rgcatid: Pointer): HResult; stdcall;
  3029.     function UnRegisterClassReqCategories(const rclsid: TGUID; cCategories: UINT; rgcatid: Pointer): HResult; stdcall;
  3030.   end;
  3031.  
  3032.   ICatInformation = interface(IUnknown)
  3033.     ['{0002E013-0000-0000-C000-000000000046}']
  3034.     function EnumCategories(lcid: UINT; out ppenumCategoryInfo: IEnumCATEGORYINFO): HResult; stdcall;
  3035.     function GetCategoryDesc(const rcatid: TGUID; lcid: UINT; out pszDesc: PWideChar): HResult; stdcall;
  3036.     function EnumClassesOfCategories(cImplemented: UINT; rgcatidImpl: Pointer; cRequired: UINT; rgcatidReq: Pointer; out ppenumClsid: IEnumGUID): HResult; stdcall;
  3037.     function IsClassOfCategories(const rclsid: TGUID; cImplemented: UINT; rgcatidImpl: Pointer; cRequired: UINT; rgcatidReq: Pointer): HResult; stdcall;
  3038.     function EnumImplCategoriesOfClass(var rclsid: TGUID; out ppenumCatid: IEnumGUID): HResult; stdcall;
  3039.     function EnumReqCategoriesOfClass(var rclsid: TGUID; out ppenumCatid: IEnumGUID): HResult; stdcall;
  3040.   end;
  3041.  
  3042. const
  3043.   CLSID_StdComponentCategoryMgr: TGUID = '{0002E005-0000-0000-C000-000000000046}';
  3044.  
  3045. { from OBJBASE.H }
  3046. { HResult manipulation routines }
  3047.  
  3048. function Succeeded(Res: HResult): Boolean;
  3049. function Failed(Res: HResult): Boolean;
  3050. function ResultCode(Res: HResult): Integer;
  3051. function ResultFacility(Res: HResult): Integer;
  3052. function ResultSeverity(Res: HResult): Integer;
  3053. function MakeResult(Severity, Facility, Code: Integer): HResult;
  3054.  
  3055. { GUID functions }
  3056.  
  3057. function IsEqualGUID(const guid1, guid2: TGUID): Boolean; stdcall;
  3058. function IsEqualIID(const iid1, iid2: TIID): Boolean; stdcall;
  3059. function IsEqualCLSID(const clsid1, clsid2: TCLSID): Boolean; stdcall;
  3060.  
  3061. { Standard object API functions }
  3062.  
  3063. function CoBuildVersion: Longint; stdcall;
  3064.  
  3065. { Init/Uninit }
  3066.  
  3067. const
  3068.   // flags passed as the coInit parameter to CoInitializeEx.
  3069.   COINIT_MULTITHREADED      = 0;      // OLE calls objects on any thread.
  3070.   COINIT_APARTMENTTHREADED  = 2;      // Apartment model
  3071.   COINIT_DISABLE_OLE1DDE    = 4;      // Don't use DDE for Ole1 support.
  3072.   COINIT_SPEED_OVER_MEMORY  = 8;      // Trade memory for speed.
  3073.  
  3074. function CoInitialize(pvReserved: Pointer): HResult; stdcall;
  3075. procedure CoUninitialize; stdcall;
  3076. function CoGetMalloc(dwMemContext: Longint; out malloc: IMalloc): HResult; stdcall;
  3077. function CoGetCurrentProcess: Longint; stdcall;
  3078. function CoRegisterMallocSpy(mallocSpy: IMallocSpy): HResult; stdcall;
  3079. function CoRevokeMallocSpy: HResult stdcall;
  3080. function CoCreateStandardMalloc(memctx: Longint; out malloc: IMalloc): HResult; stdcall;
  3081. function CoInitializeEx(pvReserved: Pointer; coInit: Longint): HResult; stdcall;
  3082.  
  3083. { Register, revoke, and get class objects }
  3084.  
  3085. function CoGetClassObject(const clsid: TCLSID; dwClsContext: Longint;
  3086.   pvReserved: Pointer; const iid: TIID; out pv): HResult; stdcall;
  3087. function CoRegisterClassObject(const clsid: TCLSID; unk: IUnknown;
  3088.   dwClsContext: Longint; flags: Longint; out dwRegister: Longint): HResult; stdcall;
  3089. function CoRevokeClassObject(dwRegister: Longint): HResult; stdcall;
  3090. function CoResumeClassObjects: HResult; stdcall;
  3091. function CoSuspendClassObjects: HResult; stdcall;
  3092. function CoAddRefServerProcess: Longint; stdcall;
  3093. function CoReleaseServerProcess: Longint; stdcall;
  3094. function CoGetPSClsid(const iid: TIID; var pClsid: TCLSID): HResult; stdcall;
  3095. function CoRegisterPSClsid(const iid: TIID; clsid: TCLSID): HResult; stdcall;
  3096.  
  3097. { Marshaling interface pointers }
  3098.  
  3099. function CoGetMarshalSizeMax(out ulSize: Longint; const iid: TIID;
  3100.   unk: IUnknown; dwDestContext: Longint; pvDestContext: Pointer;
  3101.   mshlflags: Longint): HResult; stdcall;
  3102. function CoMarshalInterface(stm: IStream; const iid: TIID; unk: IUnknown;
  3103.   dwDestContext: Longint; pvDestContext: Pointer;
  3104.   mshlflags: Longint): HResult; stdcall;
  3105. function CoUnmarshalInterface(stm: IStream; const iid: TIID;
  3106.   out pv): HResult; stdcall;
  3107. function CoMarshalHResult(stm: IStream; result: HResult): HResult; stdcall;
  3108. function CoUnmarshalHResult(stm: IStream; out result: HResult): HResult; stdcall;
  3109. function CoReleaseMarshalData(stm: IStream): HResult; stdcall;
  3110. function CoDisconnectObject(unk: IUnknown; dwReserved: Longint): HResult; stdcall;
  3111. function CoLockObjectExternal(unk: IUnknown; fLock: BOOL;
  3112.   fLastUnlockReleases: BOOL): HResult; stdcall;
  3113. function CoGetStandardMarshal(const iid: TIID; unk: IUnknown;
  3114.   dwDestContext: Longint; pvDestContext: Pointer; mshlflags: Longint;
  3115.   out marshal: IMarshal): HResult; stdcall;
  3116.  
  3117. function CoIsHandlerConnected(unk: IUnknown): BOOL; stdcall;
  3118. function CoHasStrongExternalConnections(unk: IUnknown): BOOL; stdcall;
  3119.  
  3120. { Apartment model inter-thread interface passing helpers }
  3121.  
  3122. function CoMarshalInterThreadInterfaceInStream(const iid: TIID;
  3123.   unk: IUnknown; out stm: IStream): HResult; stdcall;
  3124. function CoGetInterfaceAndReleaseStream(stm: IStream; const iid: TIID;
  3125.   out pv): HResult; stdcall;
  3126. function CoCreateFreeThreadedMarshaler(unkOuter: IUnknown;
  3127.   out unkMarshal: IUnknown): HResult; stdcall;
  3128.  
  3129. { DLL loading helpers; keeps track of ref counts and unloads all on exit }
  3130.  
  3131. function CoLoadLibrary(pszLibName: POleStr; bAutoFree: BOOL): THandle; stdcall;
  3132. procedure CoFreeLibrary(hInst: THandle); stdcall;
  3133. procedure CoFreeAllLibraries; stdcall;
  3134. procedure CoFreeUnusedLibraries; stdcall;
  3135.  
  3136. { Call Security. }
  3137.  
  3138. function CoInitializeSecurity(pSecDesc: PSecurityDescriptor; cAuthSvc: Longint;
  3139.   asAuthSvc: PSOleAuthenticationService; pReserved1: Pointer;
  3140.   dwAuthnLevel, dImpLevel: Longint; pReserved2: Pointer; dwCapabilities: Longint;
  3141.   pReserved3: Pointer): HResult; stdcall;
  3142. function CoGetCallContext(const iid: TIID; pInterface: Pointer): HResult; stdcall;
  3143. function CoQueryProxyBlanket(Proxy: IUnknown; pwAuthnSvc, pAuthzSvc: PLongint;
  3144.   pServerPrincName: POleStr; pAuthnLevel, pImpLevel: PLongint;
  3145.   pAuthInfo: Pointer; pCapabilites: PLongint): HResult; stdcall;
  3146. function CoSetProxyBlanket(Proxy: IUnknown; dwAuthnSvc, dwAuthzSvc: Longint;
  3147.   pServerPrincName: POleStr; dwAuthnLevel, dwImpLevel: Longint;
  3148.   pAuthInfo: Pointer; dwCapabilites: Longint): HResult; stdcall;
  3149. function CoCopyProxy(Proxy: IUnknown; var pCopy: IUnknown): HResult; stdcall;
  3150. function CoQueryClientBlanket(pwAuthnSvc, pAuthzSvc: PLongint;
  3151.   pServerPrincName: POleStr; dwAuthnLevel, dwImpLevel: Longint;
  3152.   pPrivs: Pointer; dwCapabilites: Longint): HResult; stdcall;
  3153. function CoImpersonateClient: HResult; stdcall;
  3154. function CoRevertToSelf: HResult; stdcall;
  3155. function CoQueryAuthenticationServices(pcAuthSvc: PLongint;
  3156.   asAuthSvc: PSOleAuthenticationService): HResult; stdcall;
  3157. function CoSwitchCallContext(NewObject: IUnknown; var pOldObject: IUnknown): HResult; stdcall;
  3158.   
  3159. { Helper for creating instances }
  3160.  
  3161. function CoCreateInstance(const clsid: TCLSID; unkOuter: IUnknown;
  3162.   dwClsContext: Longint; const iid: TIID; out pv): HResult; stdcall;
  3163. function CoGetInstanceFromFile(ServerInfo: PCoServerInfo; clsid: PCLSID;
  3164.   punkOuter: IUnknown; dwClsCtx, grfMode: Longint; pwszName: POleStr;
  3165.   dwCount: Longint; rgmqResults: PMultiQIArray): HResult; stdcall;
  3166. function CoGetInstanceFromIStorage(ServerInfo: PCoServerInfo; clsid: PCLSID;
  3167.   punkOuter: IUnknown; dwClsCtx: Longint; stg: IUnknown;
  3168.   dwCount: Longint; rgmqResults: PMultiQIArray): HResult; stdcall;
  3169. function CoCreateInstanceEx(const clsid: TCLSID;
  3170.   unkOuter: IUnknown; dwClsCtx: Longint; ServerInfo: PCoServerInfo;
  3171.   dwCount: Longint; rgmqResults: PMultiQIArray): HResult; stdcall;
  3172.  
  3173. { Other helpers }
  3174.  
  3175. function StringFromCLSID(const clsid: TCLSID; out psz: POleStr): HResult; stdcall;
  3176. function CLSIDFromString(psz: POleStr; out clsid: TCLSID): HResult; stdcall;
  3177. function StringFromIID(const iid: TIID; out psz: POleStr): HResult; stdcall;
  3178. function IIDFromString(psz: POleStr; out iid: TIID): HResult; stdcall;
  3179. function CoIsOle1Class(const clsid: TCLSID): BOOL; stdcall;
  3180. function ProgIDFromCLSID(const clsid: TCLSID; out pszProgID: POleStr): HResult; stdcall;
  3181. function CLSIDFromProgID(pszProgID: POleStr; out clsid: TCLSID): HResult; stdcall;
  3182. function StringFromGUID2(const guid: TGUID; psz: POleStr; cbMax: Integer): Integer; stdcall;
  3183.  
  3184. function CoCreateGuid(out guid: TGUID): HResult; stdcall;
  3185.  
  3186. function CoFileTimeToDosDateTime(const filetime: TFileTime; out dosDate: Word;
  3187.   out dosTime: Word): BOOL; stdcall;
  3188. function CoDosDateTimeToFileTime(nDosDate: Word; nDosTime: Word;
  3189.   out filetime: TFileTime): BOOL; stdcall;
  3190. function CoFileTimeNow(out filetime: TFileTime): HResult; stdcall;
  3191. function CoRegisterMessageFilter(messageFilter: IMessageFilter;
  3192.   out pMessageFilter: IMessageFilter): HResult; stdcall;
  3193. function CoRegisterChannelHook(const ExtensionUuid: TGUID; 
  3194.   ChannelHook: IChannelHook): HResult; stdcall;
  3195.  
  3196. { TreatAs APIs }
  3197.  
  3198. function CoGetTreatAsClass(const clsidOld: TCLSID; out clsidNew: TCLSID): HResult; stdcall;
  3199. function CoTreatAsClass(const clsidOld: TCLSID; const clsidNew: TCLSID): HResult; stdcall;
  3200.  
  3201. { The server DLLs must define their DllGetClassObject and DllCanUnloadNow
  3202.   to match these; the typedefs are located here to ensure all are changed at
  3203.   the same time }
  3204.  
  3205. type
  3206.   TDLLGetClassObject = function(const clsid: TCLSID; const iid: TIID;
  3207.     out pv): HResult stdcall;
  3208.   TDLLCanUnloadNow = function: HResult stdcall;
  3209.  
  3210. { Default memory allocation }
  3211.  
  3212. function CoTaskMemAlloc(cb: Longint): Pointer; stdcall;
  3213. function CoTaskMemRealloc(pv: Pointer; cb: Longint): Pointer; stdcall;
  3214. procedure CoTaskMemFree(pv: Pointer); stdcall;
  3215.  
  3216. { DV APIs }
  3217.  
  3218. function CreateDataAdviseHolder(out DAHolder: IDataAdviseHolder): HResult; stdcall;
  3219. function CreateDataCache(unkOuter: IUnknown; const clsid: TCLSID;
  3220.   const iid: TIID; out pv): HResult; stdcall;
  3221.  
  3222. { Storage API prototypes }
  3223.  
  3224. function StgCreateDocfile(pwcsName: POleStr; grfMode: Longint;
  3225.   reserved: Longint; out stgOpen: IStorage): HResult; stdcall;
  3226. function StgCreateDocfileOnILockBytes(lkbyt: ILockBytes; grfMode: Longint;
  3227.   reserved: Longint; out stgOpen: IStorage): HResult; stdcall;
  3228. function StgOpenStorage(pwcsName: POleStr; stgPriority: IStorage;
  3229.   grfMode: Longint; snbExclude: TSNB; reserved: Longint;
  3230.   out stgOpen: IStorage): HResult; stdcall;
  3231. function StgOpenStorageOnILockBytes(lkbyt: ILockBytes; stgPriority: IStorage;
  3232.   grfMode: Longint; snbExclude: TSNB; reserved: Longint;
  3233.   out stgOpen: IStorage): HResult; stdcall;
  3234. function StgIsStorageFile(pwcsName: POleStr): HResult; stdcall;
  3235. function StgIsStorageILockBytes(lkbyt: ILockBytes): HResult; stdcall;
  3236. function StgSetTimes(pszName: POleStr; const ctime: TFileTime;
  3237.   const atime: TFileTime; const mtime: TFileTime): HResult; stdcall;
  3238. function StgOpenAsyncDocfileOnIFillLockBytes(flb: IFillLockBytes; 
  3239.   grfMode, asyncFlags: Longint; var stgOpen: IStorage): HResult; stdcall;
  3240. function StgGetIFillLockBytesOnILockBytes(ilb: ILockBytes; 
  3241.   var flb: IFillLockBytes): HResult; stdcall;
  3242. function StgGetIFillLockBytesOnFile(pwcsName: POleStr; 
  3243.   var flb: IFillLockBytes): HResult; stdcall;
  3244. function StgOpenLayoutDocfile(pwcsDfName: POleStr; grfMode, reserved: Longint;
  3245.   var stgOpen: IStorage): HResult; stdcall;
  3246.  
  3247.  
  3248. { Moniker APIs }
  3249.  
  3250. function BindMoniker(mk: IMoniker; grfOpt: Longint; const iidResult: TIID;
  3251.   out pvResult): HResult; stdcall;
  3252. function CoGetObject(pszName: PWideString; pBindOptions: PBindOpts; 
  3253.   const iid: TIID; ppv: Pointer): HResult; stdcall; 
  3254. function MkParseDisplayName(bc: IBindCtx; szUserName: POleStr;
  3255.   out chEaten: Longint; out mk: IMoniker): HResult; stdcall;
  3256. function MonikerRelativePathTo(mkSrc: IMoniker; mkDest: IMoniker;
  3257.   out mkRelPath: IMoniker; dwReserved: BOOL): HResult; stdcall;
  3258. function MonikerCommonPrefixWith(mkThis: IMoniker; mkOther: IMoniker;
  3259.   out mkCommon: IMoniker): HResult; stdcall;
  3260. function CreateBindCtx(reserved: Longint; out bc: IBindCtx): HResult; stdcall;
  3261. function CreateGenericComposite(mkFirst: IMoniker; mkRest: IMoniker;
  3262.   out mkComposite: IMoniker): HResult; stdcall;
  3263. function GetClassFile(szFilename: POleStr; out clsid: TCLSID): HResult; stdcall;
  3264. function CreateFileMoniker(pszPathName: POleStr; out mk: IMoniker): HResult; stdcall;
  3265. function CreateItemMoniker(pszDelim: POleStr; pszItem: POleStr;
  3266.   out mk: IMoniker): HResult; stdcall;
  3267. function CreateAntiMoniker(out mk: IMoniker): HResult; stdcall;
  3268. function CreatePointerMoniker(unk: IUnknown; out mk: IMoniker): HResult; stdcall;
  3269. function GetRunningObjectTable(reserved: Longint;
  3270.   out rot: IRunningObjectTable): HResult; stdcall;
  3271.  
  3272. { from OLEAUTO.H }  
  3273. { TBStr API }
  3274.  
  3275. function SysAllocString(psz: POleStr): TBStr; stdcall;
  3276. function SysReAllocString(var bstr: TBStr; psz: POleStr): Integer; stdcall;
  3277. function SysAllocStringLen(psz: POleStr; len: Integer): TBStr; stdcall;
  3278. function SysReAllocStringLen(var bstr: TBStr; psz: POleStr;
  3279.   len: Integer): Integer; stdcall;
  3280. procedure SysFreeString(bstr: TBStr); stdcall;
  3281. function SysStringLen(bstr: TBStr): Integer; stdcall;
  3282. function SysStringByteLen(bstr: TBStr): Integer; stdcall;
  3283. function SysAllocStringByteLen(psz: PChar; len: Integer): TBStr; stdcall;
  3284.  
  3285. { Time API }
  3286.  
  3287. function DosDateTimeToVariantTime(wDosDate, wDosTime: Word;
  3288.   out vtime: TOleDate): Integer; stdcall;
  3289. function VariantTimeToDosDateTime(vtime: TOleDate; out wDosDate,
  3290.   wDosTime: Word): Integer; stdcall;
  3291. function SystemTimeToVariantTime(var SystemTime: TSystemTime;
  3292.   out vtime: TOleDate): Integer; stdcall;
  3293. function VariantTimeToSystemTime(vtime: TOleDate; 
  3294.   out SystemTime: TSystemTime): Integer; stdcall;
  3295.  
  3296. { SafeArray API }
  3297.  
  3298. function SafeArrayAllocDescriptor(cDims: Integer; out psaOut: PSafeArray): HResult; stdcall;
  3299. function SafeArrayAllocData(psa: PSafeArray): HResult; stdcall;
  3300. function SafeArrayCreate(vt: TVarType; cDims: Integer; const rgsabound): PSafeArray; stdcall;
  3301. function SafeArrayCreateVector(vt: TVarType; Lbound, cElements: Longint): PSafeArray; stdcall;
  3302. function SafeArrayCopyData(psaSource, psaTarget: PSafeArray): HResult; stdcall;
  3303. function SafeArrayDestroyDescriptor(psa: PSafeArray): HResult; stdcall;
  3304. function SafeArrayDestroyData(psa: PSafeArray): HResult; stdcall;
  3305. function SafeArrayDestroy(psa: PSafeArray): HResult; stdcall;
  3306. function SafeArrayRedim(psa: PSafeArray; const saboundNew: TSafeArrayBound): HResult; stdcall;
  3307. function SafeArrayGetDim(psa: PSafeArray): Integer; stdcall;
  3308. function SafeArrayGetElemsize(psa: PSafeArray): Integer; stdcall;
  3309. function SafeArrayGetUBound(psa: PSafeArray; nDim: Integer; out lUbound: Longint): HResult; stdcall;
  3310. function SafeArrayGetLBound(psa: PSafeArray; nDim: Integer; out lLbound: Longint): HResult; stdcall;
  3311. function SafeArrayLock(psa: PSafeArray): HResult; stdcall;
  3312. function SafeArrayUnlock(psa: PSafeArray): HResult; stdcall;
  3313. function SafeArrayAccessData(psa: PSafeArray; out pvData: Pointer): HResult; stdcall;
  3314. function SafeArrayUnaccessData(psa: PSafeArray): HResult; stdcall;
  3315. function SafeArrayGetElement(psa: PSafeArray; const rgIndices; out pv): HResult; stdcall;
  3316. function SafeArrayPutElement(psa: PSafeArray; const rgIndices; const pv): HResult; stdcall;
  3317. function SafeArrayCopy(psa: PSafeArray; out psaOut: PSafeArray): HResult; stdcall;
  3318. function SafeArrayPtrOfIndex(psa: PSafeArray; var rgIndices; out pvData: Pointer): HResult; stdcall;
  3319.  
  3320. { Variant API }
  3321.  
  3322. procedure VariantInit(var varg: OleVariant); stdcall;
  3323. function VariantClear(var varg: OleVariant): HResult; stdcall;
  3324. function VariantCopy(var vargDest: OleVariant; const vargSrc: OleVariant): HResult; stdcall;
  3325. function VariantCopyInd(var varDest: OleVariant; const vargSrc: OleVariant): HResult; stdcall;
  3326. function VariantChangeType(var vargDest: OleVariant; const vargSrc: OleVariant;
  3327.   wFlags: Word; vt: TVarType): HResult; stdcall;
  3328. function VariantChangeTypeEx(var vargDest: OleVariant; const vargSrc: OleVariant;
  3329.   lcid: TLCID; wFlags: Word; vt: TVarType): HResult; stdcall;
  3330.  
  3331. { Vector <-> Bstr conversion APIs }
  3332.  
  3333. function VectorFromBstr(bstr: TBStr; out psa: PSafeArray): HResult; stdcall;
  3334. function BstrFromVector(psa: PSafeArray; out bstr: TBStr): HResult; stdcall;
  3335.  
  3336. { VarType coercion API }
  3337.  
  3338. { Note: The routines that convert from a string are defined
  3339.   to take a POleStr rather than a TBStr because no allocation is
  3340.   required, and this makes the routines a bit more generic.
  3341.   They may of course still be passed a TBStr as the strIn param. }
  3342.  
  3343. { Any of the coersion functions that converts either from or to a string
  3344.   takes an additional lcid and dwFlags arguments. The lcid argument allows
  3345.   locale specific parsing to occur.  The dwFlags allow additional function
  3346.   specific condition to occur.  All function that accept the dwFlags argument
  3347.   can include either 0 or LOCALE_NOUSEROVERRIDE flag. In addition, the
  3348.   VarDateFromStr functions also accepts the VAR_TIMEVALUEONLY and
  3349.   VAR_DATEVALUEONLY flags }
  3350.  
  3351. function VarUI1FromI2(sIn: Smallint; out bOut: Byte): HResult; stdcall;
  3352. function VarUI1FromI4(lIn: Longint; out bOut: Byte): HResult; stdcall;
  3353. function VarUI1FromR4(fltIn: Single; out bOut: Byte): HResult; stdcall;
  3354. function VarUI1FromR8(dblIn: Double; out bOut: Byte): HResult; stdcall;
  3355. function VarUI1FromCy(cyIn: Currency; out bOut: Byte): HResult; stdcall;
  3356. function VarUI1FromDate(dateIn: TOleDate; out bOut: Byte): HResult; stdcall;
  3357. function VarUI1FromStr(const strIn: WideString; lcid: TLCID; dwFlags: Longint; out bOut: Byte): HResult; stdcall;
  3358. function VarUI1FromDisp(dispIn: IDispatch; lcid: TLCID; out bOut: Byte): HResult; stdcall;
  3359. function VarUI1FromBool(boolIn: TOleBool; out bOut: Byte): HResult; stdcall;
  3360. function VarUI1FromI1(cIn: Char; out bOut: Byte): HResult; stdcall;
  3361. function VarUI1FromUI2(uiIn: Word; out bOut: Byte): HResult; stdcall;
  3362. function VarUI1FromUI4(ulIn: Longint; out bOut: Byte): HResult; stdcall;
  3363. function VarUI1FromDec(pdecIn: PDecimal; out bOut: Byte): HResult; stdcall;
  3364.  
  3365. function VarI2FromUI1(bIn: Byte; out sOut: Smallint): HResult; stdcall;
  3366. function VarI2FromI4(lIn: Longint; out sOut: Smallint): HResult; stdcall;
  3367. function VarI2FromR4(fltIn: Single; out sOut: Smallint): HResult; stdcall;
  3368. function VarI2FromR8(dblIn: Double; out sOut: Smallint): HResult; stdcall;
  3369. function VarI2FromCy(cyIn: Currency; out sOut: Smallint): HResult; stdcall;
  3370. function VarI2FromDate(dateIn: TOleDate; out sOut: Smallint): HResult; stdcall;
  3371. function VarI2FromStr(const strIn: WideString; lcid: TLCID; dwFlags: Longint; out sOut: Smallint): HResult; stdcall;
  3372. function VarI2FromDisp(dispIn: IDispatch; lcid: TLCID; out sOut: Smallint): HResult; stdcall;
  3373. function VarI2FromBool(boolIn: TOleBool; out sOut: Smallint): HResult; stdcall;
  3374. function VarI2FromI1(cIn: Char; out bOut: Smallint): HResult; stdcall;
  3375. function VarI2FromUI2(uiIn: Word; out bOut: Smallint): HResult; stdcall;
  3376. function VarI2FromUI4(ulIn: Longint; out bOut: Smallint): HResult; stdcall;
  3377. function VarI2FromDec(pdecIn: PDecimal; out bOut: Smallint): HResult; stdcall;
  3378.  
  3379. function VarI4FromUI1(bIn: Byte; out lOut: Longint): HResult; stdcall;
  3380. function VarI4FromI2(sIn: Smallint; out lOut: Longint): HResult; stdcall;
  3381. function VarI4FromR4(fltIn: Single; out lOut: Longint): HResult; stdcall;
  3382. function VarI4FromR8(dblIn: Double; out lOut: Longint): HResult; stdcall;
  3383. function VarI4FromCy(cyIn: Currency; out lOut: Longint): HResult; stdcall;
  3384. function VarI4FromDate(dateIn: TOleDate; out lOut: Longint): HResult; stdcall;
  3385. function VarI4FromStr(const strIn: WideString; lcid: TLCID; dwFlags: Longint; out lOut: Longint): HResult; stdcall;
  3386. function VarI4FromDisp(dispIn: IDispatch; lcid: TLCID; out lOut: Longint): HResult; stdcall;
  3387. function VarI4FromBool(boolIn: TOleBool; out lOut: Longint): HResult; stdcall;
  3388. function VarI4FromI1(cIn: Char; out bOut: Longint): HResult; stdcall;
  3389. function VarI4FromUI2(uiIn: Word; out bOut: Longint): HResult; stdcall;
  3390. function VarI4FromUI4(ulIn: Longint; out bOut: Longint): HResult; stdcall;
  3391. function VarI4FromDec(pdecIn: PDecimal; out bOut: Longint): HResult; stdcall;
  3392. function VarI4FromInt(intIn: Integer; out bOut: Longint): HResult; stdcall;
  3393.  
  3394. function VarR4FromUI1(bIn: Byte; out fltOut: Single): HResult; stdcall;
  3395. function VarR4FromI2(sIn: Smallint; out fltOut: Single): HResult; stdcall;
  3396. function VarR4FromI4(lIn: Longint; out fltOut: Single): HResult; stdcall;
  3397. function VarR4FromR8(dblIn: Double; out fltOut: Single): HResult; stdcall;
  3398. function VarR4FromCy(cyIn: Currency; out fltOut: Single): HResult; stdcall;
  3399. function VarR4FromDate(dateIn: TOleDate; out fltOut: Single): HResult; stdcall;
  3400. function VarR4FromStr(const strIn: WideString; lcid: TLCID; dwFlags: Longint; out fltOut: Single): HResult; stdcall;
  3401. function VarR4FromDisp(dispIn: IDispatch; lcid: TLCID; out fltOut: Single): HResult; stdcall;
  3402. function VarR4FromBool(boolIn: TOleBool; out fltOut: Single): HResult; stdcall;
  3403. function VarR4FromI1(cIn: Char; out bOut: Single): HResult; stdcall;
  3404. function VarR4FromUI2(uiIn: Word; out bOut: Single): HResult; stdcall;
  3405. function VarR4FromUI4(ulIn: Longint; out bOut: Single): HResult; stdcall;
  3406. function VarR4FromDec(pdecIn: PDecimal; out bOut: Single): HResult; stdcall;
  3407.  
  3408. function VarR8FromUI1(bIn: Byte; out dblOut: Double): HResult; stdcall;
  3409. function VarR8FromI2(sIn: Smallint; out dblOut: Double): HResult; stdcall;
  3410. function VarR8FromI4(lIn: Longint; out dblOut: Double): HResult; stdcall;
  3411. function VarR8FromR4(fltIn: Single; out dblOut: Double): HResult; stdcall;
  3412. function VarR8FromCy(cyIn: Currency; out dblOut: Double): HResult; stdcall;
  3413. function VarR8FromDate(dateIn: TOleDate; out dblOut: Double): HResult; stdcall;
  3414. function VarR8FromStr(const strIn: WideString; lcid: TLCID; dwFlags: Longint; out dblOut: Double): HResult; stdcall;
  3415. function VarR8FromDisp(dispIn: IDispatch; lcid: TLCID; out dblOut: Double): HResult; stdcall;
  3416. function VarR8FromBool(boolIn: TOleBool; out dblOut: Double): HResult; stdcall;
  3417. function VarR8FromI1(cIn: Char; out bOut: Double): HResult; stdcall;
  3418. function VarR8FromUI2(uiIn: Word; out bOut: Double): HResult; stdcall;
  3419. function VarR8FromUI4(ulIn: Longint; out bOut: Double): HResult; stdcall;
  3420. function VarR8FromDec(pdecIn: PDecimal; out bOut: Double): HResult; stdcall;
  3421.  
  3422. function VarDateFromUI1(bIn: Byte; out dateOut: TOleDate): HResult; stdcall;
  3423. function VarDateFromI2(sIn: Smallint; out dateOut: TOleDate): HResult; stdcall;
  3424. function VarDateFromI4(lIn: Longint; out dateOut: TOleDate): HResult; stdcall;
  3425. function VarDateFromR4(fltIn: Single; out dateOut: TOleDate): HResult; stdcall;
  3426. function VarDateFromR8(dblIn: Double; out dateOut: TOleDate): HResult; stdcall;
  3427. function VarDateFromCy(cyIn: Currency; out dateOut: TOleDate): HResult; stdcall;
  3428. function VarDateFromStr(const strIn: WideString; lcid: TLCID; dwFlags: Longint; out dateOut: TOleDate): HResult; stdcall;
  3429. function VarDateFromDisp(dispIn: IDispatch; lcid: TLCID; out dateOut: TOleDate): HResult; stdcall;
  3430. function VarDateFromBool(boolIn: TOleBool; out dateOut: TOleDate): HResult; stdcall;
  3431. function VarDateFromI1(cIn: Char; out bOut: TOleDate): HResult; stdcall;
  3432. function VarDateFromUI2(uiIn: Word; out bOut: TOleDate): HResult; stdcall;
  3433. function VarDateFromUI4(ulIn: Longint; out bOut: TOleDate): HResult; stdcall;
  3434. function VarDateFromDec(pdecIn: PDecimal; out bOut: TOleDate): HResult; stdcall;
  3435.  
  3436. function VarCyFromUI1(bIn: Byte; out cyOut: Currency): HResult; stdcall;
  3437. function VarCyFromI2(sIn: Smallint; out cyOut: Currency): HResult; stdcall;
  3438. function VarCyFromI4(lIn: Longint; out cyOut: Currency): HResult; stdcall;
  3439. function VarCyFromR4(fltIn: Single; out cyOut: Currency): HResult; stdcall;
  3440. function VarCyFromR8(dblIn: Double; out cyOut: Currency): HResult; stdcall;
  3441. function VarCyFromDate(dateIn: TOleDate; out cyOut: Currency): HResult; stdcall;
  3442. function VarCyFromStr(const strIn: WideString; lcid: TLCID; dwFlags: Longint; out cyOut: Currency): HResult; stdcall;
  3443. function VarCyFromDisp(dispIn: IDispatch; lcid: TLCID; out cyOut: Currency): HResult; stdcall;
  3444. function VarCyFromBool(boolIn: TOleBool; out cyOut: Currency): HResult; stdcall;
  3445. function VarCyFromI1(cIn: Char; out bOut: Currency): HResult; stdcall;
  3446. function VarCyFromUI2(uiIn: Word; out bOut: Currency): HResult; stdcall;
  3447. function VarCyFromUI4(ulIn: Longint; out bOut: Currency): HResult; stdcall;
  3448. function VarCyFromDec(pdecIn: PDecimal; out bOut: Currency): HResult; stdcall;
  3449.  
  3450. function VarBStrFromUI1(bVal: Byte; lcid: TLCID; dwFlags: Longint; out bstrOut: WideString): HResult; stdcall;
  3451. function VarBStrFromI2(iVal: Smallint; lcid: TLCID; dwFlags: Longint; out bstrOut: WideString): HResult; stdcall;
  3452. function VarBStrFromI4(lIn: Longint; lcid: TLCID; dwFlags: Longint; out bstrOut: WideString): HResult; stdcall;
  3453. function VarBStrFromR4(fltIn: Single; lcid: TLCID; dwFlags: Longint; out bstrOut: WideString): HResult; stdcall;
  3454. function VarBStrFromR8(dblIn: Double; lcid: TLCID; dwFlags: Longint; out bstrOut: WideString): HResult; stdcall;
  3455. function VarBStrFromCy(cyIn: Currency; lcid: TLCID; dwFlags: Longint; out bstrOut: WideString): HResult; stdcall;
  3456. function VarBStrFromDate(dateIn: TOleDate; lcid: TLCID; dwFlags: Longint; out bstrOut: WideString): HResult; stdcall;
  3457. function VarBStrFromDisp(dispIn: IDispatch; lcid: TLCID; dwFlags: Longint; out bstrOut: WideString): HResult; stdcall;
  3458. function VarBStrFromBool(boolIn: TOleBool; lcid: TLCID; dwFlags: Longint; out bstrOut: WideString): HResult; stdcall;
  3459. function VarBStrFromI1(cIn: Char; lcid: TLCID; dwFlags: Longint; out bstrOut: WideString): HResult; stdcall;
  3460. function VarBStrFromUI2(uiIn: Word; lcid: TLCID; dwFlags: Longint; out bstrOut: WideString): HResult; stdcall;
  3461. function VarBStrFromUI4(ulIn: Longint; lcid: TLCID; dwFlags: Longint; out bstrOut: WideString): HResult; stdcall;
  3462. function VarBStrFromDec(pdecIn: PDecimal; lcid: TLCID; dwFlags: Longint; out bstrOut: WideString): HResult; stdcall;
  3463.  
  3464. function VarBoolFromUI1(bIn: Byte; out boolOut: TOleBool): HResult; stdcall;
  3465. function VarBoolFromI2(sIn: Smallint; out boolOut: TOleBool): HResult; stdcall;
  3466. function VarBoolFromI4(lIn: Longint; out boolOut: TOleBool): HResult; stdcall;
  3467. function VarBoolFromR4(fltIn: Single; out boolOut: TOleBool): HResult; stdcall;
  3468. function VarBoolFromR8(dblIn: Double; out boolOut: TOleBool): HResult; stdcall;
  3469. function VarBoolFromDate(dateIn: TOleDate; out boolOut: TOleBool): HResult; stdcall;
  3470. function VarBoolFromCy(cyIn: Currency; out boolOut: TOleBool): HResult; stdcall;
  3471. function VarBoolFromStr(const strIn: WideString; lcid: TLCID; dwFlags: Longint; out boolOut: TOleBool): HResult; stdcall;
  3472. function VarBoolFromDisp(dispIn: IDispatch; lcid: TLCID; out boolOut: TOleBool): HResult; stdcall;
  3473. function VarBoolFromI1(cIn: Char; out boolOut: TOleBool): HResult; stdcall;
  3474. function VarBoolFromUI2(uiIn: Word; out boolOut: TOleBool): HResult; stdcall;
  3475. function VarBoolFromUI4(ulIn: Longint; out boolOut: TOleBool): HResult; stdcall;
  3476. function VarBoolFromDec(pdecIn: PDecimal; out boolOut: TOleBool): HResult; stdcall;
  3477.  
  3478. { TypeInfo API }
  3479.  
  3480. function LHashValOfNameSys(syskind: TSysKind; lcid: TLCID;
  3481.   szName: POleStr): Longint; stdcall;
  3482. function LHashValOfNameSysA(syskind: TSysKind; lcid: TLCID;
  3483.   szName: PChar): Longint; stdcall;
  3484.  
  3485. function LHashValOfName(lcid: TLCID; szName: POleStr): Longint;
  3486. function WHashValOfLHashVal(lhashval: Longint): Word;
  3487. function IsHashValCompatible(lhashval1, lhashval2: Longint): Boolean;
  3488.  
  3489. function LoadTypeLib(szFile: POleStr; out tlib: ITypeLib): HResult; stdcall;
  3490. function LoadTypeLibEx(szFile: POleStr; regkind: TRegKind; out tlib: ITypeLib): HResult; stdcall;
  3491. function LoadRegTypeLib(const guid: TGUID; wVerMajor, wVerMinor: Word;
  3492.   lcid: TLCID; out tlib: ITypeLib): HResult; stdcall;
  3493. function QueryPathOfRegTypeLib(const guid: TGUID; wMaj, wMin: Word;
  3494.   lcid: TLCID; out bstrPathName: WideString): HResult; stdcall;
  3495. function RegisterTypeLib(tlib: ITypeLib; szFullPath, szHelpDir: POleStr): HResult; stdcall;
  3496. function UnRegisterTypeLib(const libID: TGUID; wVerMajor, wVerMinor: Word; 
  3497.   lcid: TLCID; syskind: TSysKind): HResult; stdcall;
  3498. function CreateTypeLib(syskind: TSysKind; szFile: POleStr;
  3499.   out ctlib: ICreateTypeLib): HResult; stdcall;
  3500. function CreateTypeLib2(syskind: TSysKind; szFile: POleStr;
  3501.   out ctlib: ICreateTypeLib): HResult; stdcall;
  3502.  
  3503. { IDispatch implementation support }
  3504.  
  3505. function DispGetParam(const dispparams: TDispParams; position: Integer;
  3506.   vtTarg: TVarType; var varResult: OleVariant; var puArgErr: Integer): HResult; stdcall;
  3507. function DispGetIDsOfNames(tinfo: ITypeInfo; rgszNames: POleStrList;
  3508.   cNames: Integer; rgdispid: PDispIDList): HResult; stdcall;
  3509. function DispInvoke(this: Pointer; tinfo: ITypeInfo; dispidMember: TDispID;
  3510.   wFlags: Word; var params: TDispParams; varResult: PVariant;
  3511.   excepinfo: PExcepInfo; puArgErr: PInteger): HResult; stdcall;
  3512. function CreateDispTypeInfo(var idata: TInterfaceData; lcid: TLCID;
  3513.   out tinfo: ITypeInfo): HResult; stdcall;
  3514. function CreateStdDispatch(unkOuter: IUnknown; pvThis: Pointer;
  3515.   tinfo: ITypeInfo; out unkStdDisp: IUnknown): HResult; stdcall;
  3516. function DispCallFunc(pvInstance: Pointer; oVft: Longint; cc: TCallConv; 
  3517.   vtReturn: TVarType; cActuals: Longint; var rgvt: TVarType; var prgpvarg: OleVariant; 
  3518.   var vargResult: OleVariant): HResult; stdcall;
  3519.  
  3520.  
  3521. { Active object registration API }
  3522. const
  3523.   ACTIVEOBJECT_STRONG = 0;
  3524.   ACTIVEOBJECT_WEAK = 1;
  3525.  
  3526. function RegisterActiveObject(unk: IUnknown; const clsid: TCLSID;
  3527.   dwFlags: Longint; out dwRegister: Longint): HResult; stdcall;
  3528. function RevokeActiveObject(dwRegister: Longint; pvReserved: Pointer): HResult; stdcall;
  3529. function GetActiveObject(const clsid: TCLSID; pvReserved: Pointer;
  3530.   out unk: IUnknown): HResult; stdcall;
  3531.  
  3532. { ErrorInfo API }
  3533.  
  3534. function SetErrorInfo(dwReserved: Longint; errinfo: IErrorInfo): HResult; stdcall;
  3535. function GetErrorInfo(dwReserved: Longint; out errinfo: IErrorInfo): HResult; stdcall;
  3536. function CreateErrorInfo(out errinfo: ICreateErrorInfo): HResult; stdcall;
  3537.  
  3538. { Misc API }
  3539.  
  3540. function OaBuildVersion: Longint; stdcall;
  3541.  
  3542. { from OLE2.H }
  3543. { OLE API prototypes }
  3544.  
  3545. function OleBuildVersion: HResult; stdcall;
  3546.  
  3547. { helper functions }
  3548.  
  3549. function ReadClassStg(stg: IStorage; out clsid: TCLSID): HResult; stdcall;
  3550. function WriteClassStg(stg: IStorage; const clsid: TIID): HResult; stdcall;
  3551. function ReadClassStm(stm: IStream; out clsid: TCLSID): HResult; stdcall;
  3552. function WriteClassStm(stm: IStream; const clsid: TIID): HResult; stdcall;
  3553. function WriteFmtUserTypeStg(stg: IStorage; cf: TClipFormat;
  3554.   pszUserType: POleStr): HResult; stdcall;
  3555. function ReadFmtUserTypeStg(stg: IStorage; out cf: TClipFormat;
  3556.   out pszUserType: POleStr): HResult; stdcall;
  3557.  
  3558. { Initialization and termination }
  3559.  
  3560. function OleInitialize(pwReserved: Pointer): HResult; stdcall;
  3561. procedure OleUninitialize; stdcall;
  3562.  
  3563. { APIs to query whether (Embedded/Linked) object can be created from
  3564.   the data object }
  3565.  
  3566. function OleQueryLinkFromData(srcDataObject: IDataObject): HResult; stdcall;
  3567. function OleQueryCreateFromData(srcDataObject: IDataObject): HResult; stdcall;
  3568.  
  3569. { Object creation APIs }
  3570.  
  3571. function OleCreate(const clsid: TCLSID; const iid: TIID; renderopt: Longint;
  3572.   formatEtc: PFormatEtc; clientSite: IOleClientSite;
  3573.   stg: IStorage; out vObj): HResult; stdcall;
  3574. function OleCreateEx(const clsid: TCLSID; const iid: TIID;
  3575.   dwFlags, renderopt, cFormats: Longint; rgAdvf: PLongintList; rgFFormatEtc: PFormatEtc;
  3576.   AdviseSink: IAdviseSink; rgdwConnection: PLongintList; clientSite: IOleClientSite;
  3577.   stg: IStorage; out vObj): HResult; stdcall;
  3578. function OleCreateFromData(srcDataObj: IDataObject; const iid: TIID;
  3579.   renderopt: Longint; formatEtc: PFormatEtc; clientSite: IOleClientSite;
  3580.   stg: IStorage; out vObj): HResult; stdcall;
  3581. function OleCreateFromDataEx(srcDataObj: IDataObject; const iid: TIID;
  3582.   dwFlags, renderopt, cFormats: Longint; rgAdvf: PLongintList; rgFFormatEtc: PFormatEtc;
  3583.   AdviseSink: IAdviseSink; rgdwConnection: PLongintList; clientSite: IOleClientSite;
  3584.   stg: IStorage; out vObj): HResult; stdcall;
  3585. function OleCreateLinkFromData(srcDataObj: IDataObject; const iid: TIID;
  3586.   renderopt: Longint; formatEtc: PFormatEtc; clientSite: IOleClientSite;
  3587.   stg: IStorage; out vObj): HResult; stdcall;
  3588. function OleCreateLinkFromDataEx(srcDataObj: IDataObject; const iid: TIID;
  3589.   dwFlags, renderopt, cFormats: Longint; rgAdvf: PLongintList; rgFFormatEtc: PFormatEtc;
  3590.   AdviseSink: IAdviseSink; rgdwConnection: PLongintList; clientSite: IOleClientSite;
  3591.   stg: IStorage; out vObj): HResult; stdcall;
  3592. function OleCreateStaticFromData(srcDataObj: IDataObject; const iid: TIID;
  3593.   renderopt: Longint; formatEtc: PFormatEtc; clientSite: IOleClientSite;
  3594.   stg: IStorage; out vObj): HResult; stdcall;
  3595. function OleCreateLink(mkLinkSrc: IMoniker; const iid: TIID;
  3596.   renderopt: Longint; formatEtc: PFormatEtc; clientSite: IOleClientSite;
  3597.   stg: IStorage; out vObj): HResult; stdcall;
  3598. function OleCreateLinkEx(mkLinkSrc: IMoniker; const iid: TIID;
  3599.   dwFlags, renderopt, cFormats: Longint; rgAdvf: PLongintList; rgFFormatEtc: PFormatEtc;
  3600.   AdviseSink: IAdviseSink; rgdwConnection: PLongintList; clientSite: IOleClientSite;
  3601.   stg: IStorage; out vObj): HResult; stdcall;
  3602. function OleCreateLinkToFile(pszFileName: POleStr; const iid: TIID;
  3603.   renderopt: Longint; formatEtc: PFormatEtc; clientSite: IOleClientSite;
  3604.   stg: IStorage; out vObj): HResult; stdcall;
  3605. function OleCreateLinkToFileEx(pszFileName: POleStr; const iid: TIID;
  3606.   dwFlags, renderopt, cFormats: Longint; rgAdvf: PLongintList; rgFFormatEtc: PFormatEtc;
  3607.   AdviseSink: IAdviseSink; rgdwConnection: PLongintList; clientSite: IOleClientSite;
  3608.   stg: IStorage; out vObj): HResult; stdcall;
  3609. function OleCreateFromFile(const clsid: TCLSID; pszFileName: POleStr;
  3610.   const iid: TIID; renderopt: Longint; formatEtc: PFormatEtc;
  3611.   clientSite: IOleClientSite; stg: IStorage; out vObj): HResult; stdcall;
  3612. function OleCreateFromFileEx(const clsid: TCLSID; pszFileName: POleStr; const iid: TIID;
  3613.   dwFlags, renderopt, cFormats: Longint; rgAdvf: PLongintList; rgFFormatEtc: PFormatEtc;
  3614.   AdviseSink: IAdviseSink; rgdwConnection: PLongintList; clientSite: IOleClientSite;
  3615.   stg: IStorage; out vObj): HResult; stdcall;
  3616. function OleLoad(stg: IStorage; const iid: TIID; clientSite: IOleClientSite;
  3617.   out vObj): HResult; stdcall;
  3618. function OleSave(ps: IPersistStorage; stg: IStorage; fSameAsLoad: BOOL): HResult; stdcall;
  3619. function OleLoadFromStream(stm: IStream; const iidInterface: TIID;
  3620.   out vObj): HResult; stdcall;
  3621. function OleSaveToStream(pstm: IPersistStream; stm: IStream): HResult; stdcall;
  3622. function OleSetContainedObject(unknown: IUnknown; fContained: BOOL): HResult; stdcall;
  3623. function OleNoteObjectVisible(unknown: IUnknown; fVisible: BOOL): HResult; stdcall;
  3624.  
  3625. { DragDrop APIs }
  3626.  
  3627. function RegisterDragDrop(wnd: HWnd; dropTarget: IDropTarget): HResult; stdcall;
  3628. function RevokeDragDrop(wnd: HWnd): HResult; stdcall;
  3629. function DoDragDrop(dataObj: IDataObject; dropSource: IDropSource;
  3630.   dwOKEffects: Longint; var dwEffect: Longint): HResult; stdcall;
  3631.  
  3632. { Clipboard APIs }
  3633.  
  3634. function OleSetClipboard(dataObj: IDataObject): HResult; stdcall;
  3635. function OleGetClipboard(out dataObj: IDataObject): HResult; stdcall;
  3636. function OleFlushClipboard: HResult; stdcall;
  3637. function OleIsCurrentClipboard(dataObj: IDataObject): HResult; stdcall;
  3638.  
  3639. { In-place editing APIs }
  3640.  
  3641. function OleCreateMenuDescriptor(hmenuCombined: HMenu;
  3642.   var menuWidths: TOleMenuGroupWidths): HMenu; stdcall;
  3643. function OleSetMenuDescriptor(holemenu: HMenu; hwndFrame: HWnd;
  3644.   hwndActiveObject: HWnd; frame: IOleInPlaceFrame;
  3645.   activeObj: IOleInPlaceActiveObject): HResult; stdcall;
  3646. function OleDestroyMenuDescriptor(holemenu: HMenu): HResult; stdcall;
  3647. function OleTranslateAccelerator(frame: IOleInPlaceFrame;
  3648.   var frameInfo: TOleInPlaceFrameInfo; msg: PMsg): HResult; stdcall;
  3649.  
  3650. { Helper APIs }
  3651.  
  3652. function OleDuplicateData(hSrc: THandle; cfFormat: TClipFormat;
  3653.   uiFlags: Integer): THandle; stdcall;
  3654. function OleDraw(unknown: IUnknown; dwAspect: Longint; hdcDraw: HDC;
  3655.   const rcBounds: TRect): HResult; stdcall;
  3656. function OleRun(unknown: IUnknown): HResult; stdcall;
  3657. function OleIsRunning(obj: IOleObject): BOOL; stdcall;
  3658. function OleLockRunning(unknown: IUnknown; fLock: BOOL;
  3659.   fLastUnlockCloses: BOOL): HResult; stdcall;
  3660. procedure ReleaseStgMedium(var medium: TStgMedium); stdcall;
  3661. function CreateOleAdviseHolder(out OAHolder: IOleAdviseHolder): HResult; stdcall;
  3662. function OleCreateDefaultHandler(const clsid: TCLSID; unkOuter: IUnknown;
  3663.   const iid: TIID; out vObj): HResult; stdcall;
  3664. function OleCreateEmbeddingHelper(const clsid: TCLSID; unkOuter: IUnknown;
  3665.   flags: Longint; cf: IClassFactory; const iid: TIID; out vObj): HResult; stdcall;
  3666. function IsAccelerator(accel: HAccel; cAccelEntries: Integer; msg: PMsg;
  3667.   var pwCmd: Word): BOOL; stdcall;
  3668.  
  3669. { Icon extraction helper APIs }
  3670.  
  3671. function OleGetIconOfFile(pszPath: POleStr; fUseFileAsLabel: BOOL): HGlobal; stdcall;
  3672. function OleGetIconOfClass(const clsid: TCLSID; pszLabel: POleStr;
  3673.   fUseTypeAsLabel: BOOL): HGlobal; stdcall;
  3674. function OleMetafilePictFromIconAndLabel(icon: HIcon; pszLabel: POleStr;
  3675.   pszSourceFile: POleStr; iIconIndex: Integer): HGlobal; stdcall;
  3676.  
  3677. { Registration database helper APIs }
  3678.  
  3679. function OleRegGetUserType(const clsid: TCLSID; dwFormOfType: Longint;
  3680.   out pszUserType: POleStr): HResult; stdcall;
  3681. function OleRegGetMiscStatus(const clsid: TCLSID; dwAspect: Longint;
  3682.   out dwStatus: Longint): HResult; stdcall;
  3683. function OleRegEnumFormatEtc(const clsid: TCLSID; dwDirection: Longint;
  3684.   out enum: IEnumFormatEtc): HResult; stdcall;
  3685. function OleRegEnumVerbs(const clsid: TCLSID;
  3686.   out enum: IEnumOleVerb): HResult; stdcall;
  3687.  
  3688. { OLE 1.0 conversion APIs }
  3689.  
  3690. function OleConvertIStorageToOLESTREAM(stg: IStorage;
  3691.   polestm: Pointer): HResult; stdcall;
  3692. function OleConvertOLESTREAMToIStorage(polestm: Pointer; stg: IStorage;
  3693.   td: PDVTargetDevice): HResult; stdcall;
  3694. function OleConvertIStorageToOLESTREAMEx(stg: IStorage; cfFormat: TClipFormat;
  3695.   lWidth: Longint; lHeight: Longint; dwSize: Longint; var medium: TStgMedium;
  3696.   polestm: Pointer): HResult; stdcall;
  3697. function OleConvertOLESTREAMToIStorageEx(polestm: Pointer; stg: IStorage;
  3698.   var cfFormat: TClipFormat; var lWidth: Longint; var lHeight: Longint;
  3699.   var dwSize: Longint; var medium: TStgMedium): HResult; stdcall;
  3700.  
  3701. { Storage utility APIs }
  3702.  
  3703. function GetHGlobalFromILockBytes(lkbyt: ILockBytes; out hglob: HGlobal): HResult; stdcall;
  3704. function CreateILockBytesOnHGlobal(hglob: HGlobal; fDeleteOnRelease: BOOL;
  3705.   out lkbyt: ILockBytes): HResult; stdcall;
  3706. function GetHGlobalFromStream(stm: IStream; out hglob: HGlobal): HResult; stdcall;
  3707. function CreateStreamOnHGlobal(hglob: HGlobal; fDeleteOnRelease: BOOL;
  3708.   out stm: IStream): HResult; stdcall;
  3709.  
  3710. { ConvertTo APIs }
  3711.  
  3712. function OleDoAutoConvert(stg: IStorage; out clsidNew: TCLSID): HResult; stdcall;
  3713. function OleGetAutoConvert(const clsidOld: TCLSID; out clsidNew: TCLSID): HResult; stdcall;
  3714. function OleSetAutoConvert(const clsidOld: TCLSID; const clsidNew: TCLSID): HResult; stdcall;
  3715. function GetConvertStg(stg: IStorage): HResult; stdcall;
  3716. function SetConvertStg(stg: IStorage; fConvert: BOOL): HResult; stdcall;
  3717.  
  3718. { from OLECTL.H }
  3719. { Property frame APIs }
  3720.  
  3721. function OleCreatePropertyFrame(hwndOwner: HWnd; x, y: Integer;
  3722.   lpszCaption: POleStr; cObjects: Integer; pObjects: Pointer;
  3723.   cPages: Integer; pPageCLSIDs: Pointer; lcid: TLCID; dwReserved: Longint;
  3724.   pvReserved: Pointer): HResult; stdcall;
  3725. function OleCreatePropertyFrameIndirect(const Params: TOCPFIParams): HResult; stdcall;
  3726.  
  3727. { Standard type APIs }
  3728.  
  3729. function OleTranslateColor(clr: TOleColor; hpal: HPalette;
  3730.  out colorref: TColorRef): HResult; stdcall;
  3731. function OleCreateFontIndirect(const FontDesc: TFontDesc; const iid: TIID;
  3732.   out vObject): HResult; stdcall;
  3733. function OleCreatePictureIndirect(const PictDesc: TPictDesc; const iid: TIID;
  3734.   fOwn: BOOL; out vObject): HResult; stdcall;
  3735. function OleLoadPicture(stream: IStream; lSize: Longint; fRunmode: BOOL;
  3736.   const iid: TIID; out vObject): HResult; stdcall;
  3737. function OleLoadPicturePath(szURLorPath: POleStr; unkCaller: IUnknown;
  3738.   dwReserved: Longint; clrReserved: TOleColor; const iid: TIID;
  3739.   ppvRet: Pointer): HResult; stdcall;
  3740. function OleLoadPictureFile(varFileName: OleVariant;
  3741.   var lpdispPicture: IDispatch): HResult; stdcall;
  3742. function OleSavePictureFile(dispPicture: IDispatch;
  3743.   bstrFileName: TBStr): HResult; stdcall;
  3744. function OleIconToCursor(hinstExe: THandle; hIcon: THandle): HCursor; stdcall;
  3745.  
  3746. implementation
  3747.  
  3748. const
  3749.   ole32    = 'ole32.dll';
  3750.   oleaut32 = 'oleaut32.dll';
  3751.   olepro32 = 'olepro32.dll';
  3752.  
  3753. { Externals from ole32.dll }
  3754.  
  3755. function IsEqualGUID;                   external ole32 name 'IsEqualGUID';
  3756. function IsEqualIID;                    external ole32 name 'IsEqualGUID';
  3757. function IsEqualCLSID;                  external ole32 name 'IsEqualGUID';
  3758. function CoBuildVersion;                external ole32 name 'CoBuildVersion';
  3759. function CoInitialize;                  external ole32 name 'CoInitialize';
  3760. function CoInitializeEx;                external ole32 name 'CoInitializeEx';
  3761. procedure CoUninitialize;               external ole32 name 'CoUninitialize';
  3762. function CoGetMalloc;                   external ole32 name 'CoGetMalloc';
  3763. function CoGetCurrentProcess;           external ole32 name 'CoGetCurrentProcess';
  3764. function CoRegisterMallocSpy;           external ole32 name 'CoRegisterMallocSpy';
  3765. function CoRevokeMallocSpy;             external ole32 name 'CoRevokeMallocSpy';
  3766. function CoCreateStandardMalloc;        external ole32 name 'CoCreateStandardMalloc';
  3767. function CoGetClassObject;              external ole32 name 'CoGetClassObject';
  3768. function CoRegisterClassObject;         external ole32 name 'CoRegisterClassObject';
  3769. function CoRevokeClassObject;           external ole32 name 'CoRevokeClassObject';
  3770. function CoResumeClassObjects;          external ole32 name 'CoResumeClassObjects';
  3771. function CoSuspendClassObjects;         external ole32 name 'CoSuspendClassObjects';
  3772. function CoAddRefServerProcess;         external ole32 name 'CoAddRefServerProcess';
  3773. function CoReleaseServerProcess;        external ole32 name 'CoReleaseServerProcess';
  3774. function CoGetPSClsid;                  external ole32 name 'CoGetPSClsid';
  3775. function CoRegisterPSClsid;             external ole32 name 'CoRegisterPSClsid';
  3776. function CoGetMarshalSizeMax;           external ole32 name 'CoGetMarshalSizeMax';
  3777. function CoMarshalInterface;            external ole32 name 'CoMarshalInterface';
  3778. function CoUnmarshalInterface;          external ole32 name 'CoUnmarshalInterface';
  3779. function CoMarshalHResult;              external ole32 name 'CoMarshalHResult';
  3780. function CoUnmarshalHResult;            external ole32 name 'CoUnmarshalHResult';
  3781. function CoReleaseMarshalData;          external ole32 name 'CoReleaseMarshalData';
  3782. function CoDisconnectObject;            external ole32 name 'CoDisconnectObject';
  3783. function CoLockObjectExternal;          external ole32 name 'CoLockObjectExternal';
  3784. function CoGetStandardMarshal;          external ole32 name 'CoGetStandardMarshal';
  3785. function CoIsHandlerConnected;          external ole32 name 'CoIsHandlerConnected';
  3786. function CoHasStrongExternalConnections; external ole32 name 'CoHasStrongExternalConnections';
  3787. function CoMarshalInterThreadInterfaceInStream; external ole32 name 'CoMarshalInterThreadInterfaceInStream';
  3788. function CoGetInterfaceAndReleaseStream; external ole32 name 'CoGetInterfaceAndReleaseStream';
  3789. function CoCreateFreeThreadedMarshaler; external ole32 name 'CoCreateFreeThreadedMarshaler';
  3790. function CoLoadLibrary;                 external ole32 name 'CoLoadLibrary';
  3791. procedure CoFreeLibrary;                external ole32 name 'CoFreeLibrary';
  3792. procedure CoFreeAllLibraries;           external ole32 name 'CoFreeAllLibraries';
  3793. procedure CoFreeUnusedLibraries;        external ole32 name 'CoFreeUnusedLibraries';
  3794. function CoInitializeSecurity;          external ole32 name 'CoInitializeSecurity';
  3795. function CoGetCallContext;              external ole32 name 'CoGetCallContext';
  3796. function CoQueryProxyBlanket;           external ole32 name 'CoQueryProxyBlanket';
  3797. function CoSetProxyBlanket;             external ole32 name 'CoSetProxyBlanket';
  3798. function CoCopyProxy;                   external ole32 name 'CoCopyProxy';
  3799. function CoQueryClientBlanket;          external ole32 name 'CoQueryClientBlanket';
  3800. function CoImpersonateClient;           external ole32 name 'CoImpersonateClient';
  3801. function CoRevertToSelf;                external ole32 name 'CoRevertToSelf';
  3802. function CoQueryAuthenticationServices; external ole32 name 'CoQueryAuthenticationServices';
  3803. function CoSwitchCallContext;           external ole32 name 'CoSwitchCallContext';
  3804. function CoCreateInstance;              external ole32 name 'CoCreateInstance';
  3805. function CoGetInstanceFromFile;         external ole32 name 'CoGetInstanceFromFile';
  3806. function CoGetInstanceFromIStorage;     external ole32 name 'CoGetInstanceFromIStorage';
  3807. function CoCreateInstanceEx;            external ole32 name 'CoCreateInstanceEx';
  3808. function StringFromCLSID;               external ole32 name 'StringFromCLSID';
  3809. function CLSIDFromString;               external ole32 name 'CLSIDFromString';
  3810. function StringFromIID;                 external ole32 name 'StringFromIID';
  3811. function IIDFromString;                 external ole32 name 'IIDFromString';
  3812. function CoIsOle1Class;                 external ole32 name 'CoIsOle1Class';
  3813. function ProgIDFromCLSID;               external ole32 name 'ProgIDFromCLSID';
  3814. function CLSIDFromProgID;               external ole32 name 'CLSIDFromProgID';
  3815. function StringFromGUID2;               external ole32 name 'StringFromGUID2';
  3816. function CoCreateGuid;                  external ole32 name 'CoCreateGuid';
  3817. function CoFileTimeToDosDateTime;       external ole32 name 'CoFileTimeToDosDateTime';
  3818. function CoDosDateTimeToFileTime;       external ole32 name 'CoDosDateTimeToFileTime';
  3819. function CoFileTimeNow;                 external ole32 name 'CoFileTimeNow';
  3820. function CoRegisterMessageFilter;       external ole32 name 'CoRegisterMessageFilter';
  3821. function CoRegisterChannelHook;         external ole32 name 'CoRegisterChannelHook';
  3822. function CoGetTreatAsClass;             external ole32 name 'CoGetTreatAsClass';
  3823. function CoTreatAsClass;                external ole32 name 'CoTreatAsClass';
  3824. function CoTaskMemAlloc;                external ole32 name 'CoTaskMemAlloc';
  3825. function CoTaskMemRealloc;              external ole32 name 'CoTaskMemRealloc';
  3826. procedure CoTaskMemFree;                external ole32 name 'CoTaskMemFree';
  3827. function CreateDataAdviseHolder;        external ole32 name 'CreateDataAdviseHolder';
  3828. function CreateDataCache;               external ole32 name 'CreateDataCache';
  3829. function StgCreateDocfile;              external ole32 name 'StgCreateDocfile';
  3830. function StgCreateDocfileOnILockBytes;  external ole32 name 'StgCreateDocfileOnILockBytes';
  3831. function StgOpenStorage;                external ole32 name 'StgOpenStorage';
  3832. function StgOpenStorageOnILockBytes;    external ole32 name 'StgOpenStorageOnILockBytes';
  3833. function StgIsStorageFile;              external ole32 name 'StgIsStorageFile';
  3834. function StgIsStorageILockBytes;        external ole32 name 'StgIsStorageILockBytes';
  3835. function StgSetTimes;                   external ole32 name 'StgSetTimes';
  3836. function StgOpenAsyncDocfileOnIFillLockBytes; external ole32 name 'StgOpenAsyncDocfileOnIFillLockBytes';
  3837. function StgGetIFillLockBytesOnILockBytes; external ole32 name 'StgGetIFillLockBytesOnILockBytes';
  3838. function StgGetIFillLockBytesOnFile;    external ole32 name 'StgGetIFillLockBytesOnFile';
  3839. function StgOpenLayoutDocfile;          external ole32 name 'StgOpenLayoutDocfile';
  3840. function BindMoniker;                   external ole32 name 'BindMoniker';
  3841. function CoGetObject;                   external ole32 name 'CoGetObject';
  3842. function MkParseDisplayName;            external ole32 name 'MkParseDisplayName';
  3843. function MonikerRelativePathTo;         external ole32 name 'MonikerRelativePathTo';
  3844. function MonikerCommonPrefixWith;       external ole32 name 'MonikerCommonPrefixWith';
  3845. function CreateBindCtx;                 external ole32 name 'CreateBindCtx';
  3846. function CreateGenericComposite;        external ole32 name 'CreateGenericComposite';
  3847. function GetClassFile;                  external ole32 name 'GetClassFile';
  3848. function CreateFileMoniker;             external ole32 name 'CreateFileMoniker';
  3849. function CreateItemMoniker;             external ole32 name 'CreateItemMoniker';
  3850. function CreateAntiMoniker;             external ole32 name 'CreateAntiMoniker';
  3851. function CreatePointerMoniker;          external ole32 name 'CreatePointerMoniker';
  3852. function GetRunningObjectTable;         external ole32 name 'GetRunningObjectTable';
  3853. function OleBuildVersion;               external ole32 name 'OleBuildVersion';
  3854. function ReadClassStg;                  external ole32 name 'ReadClassStg';
  3855. function WriteClassStg;                 external ole32 name 'WriteClassStg';
  3856. function ReadClassStm;                  external ole32 name 'ReadClassStm';
  3857. function WriteClassStm;                 external ole32 name 'WriteClassStm';
  3858. function WriteFmtUserTypeStg;           external ole32 name 'WriteFmtUserTypeStg';
  3859. function ReadFmtUserTypeStg;            external ole32 name 'ReadFmtUserTypeStg';
  3860. function OleInitialize;                 external ole32 name 'OleInitialize';
  3861. procedure OleUninitialize;              external ole32 name 'OleUninitialize';
  3862. function OleQueryLinkFromData;          external ole32 name 'OleQueryLinkFromData';
  3863. function OleQueryCreateFromData;        external ole32 name 'OleQueryCreateFromData';
  3864. function OleCreate;                     external ole32 name 'OleCreate';
  3865. function OleCreateEx;                   external ole32 name 'OleCreateEx';
  3866. function OleCreateFromDataEx;           external ole32 name 'OleCreateFromDataEx';
  3867. function OleCreateFromData;             external ole32 name 'OleCreateFromData';
  3868. function OleCreateLinkFromData;         external ole32 name 'OleCreateLinkFromData';
  3869. function OleCreateLinkFromDataEx;       external ole32 name 'OleCreateLinkFromDataEx';
  3870. function OleCreateStaticFromData;       external ole32 name 'OleCreateStaticFromData';
  3871. function OleCreateLink;                 external ole32 name 'OleCreateLink';
  3872. function OleCreateLinkEx;               external ole32 name 'OleCreateLinkEx';
  3873. function OleCreateLinkToFile;           external ole32 name 'OleCreateLinkToFile';
  3874. function OleCreateLinkToFileEx;         external ole32 name 'OleCreateLinkToFileEx';
  3875. function OleCreateFromFile;             external ole32 name 'OleCreateFromFile';
  3876. function OleCreateFromFileEx;           external ole32 name 'OleCreateFromFileEx';
  3877. function OleLoad;                       external ole32 name 'OleLoad';
  3878. function OleSave;                       external ole32 name 'OleSave';
  3879. function OleLoadFromStream;             external ole32 name 'OleLoadFromStream';
  3880. function OleSaveToStream;               external ole32 name 'OleSaveToStream';
  3881. function OleSetContainedObject;         external ole32 name 'OleSetContainedObject';
  3882. function OleNoteObjectVisible;          external ole32 name 'OleNoteObjectVisible';
  3883. function RegisterDragDrop;              external ole32 name 'RegisterDragDrop';
  3884. function RevokeDragDrop;                external ole32 name 'RevokeDragDrop';
  3885. function DoDragDrop;                    external ole32 name 'DoDragDrop';
  3886. function OleSetClipboard;               external ole32 name 'OleSetClipboard';
  3887. function OleGetClipboard;               external ole32 name 'OleGetClipboard';
  3888. function OleFlushClipboard;             external ole32 name 'OleFlushClipboard';
  3889. function OleIsCurrentClipboard;         external ole32 name 'OleIsCurrentClipboard';
  3890. function OleCreateMenuDescriptor;       external ole32 name 'OleCreateMenuDescriptor';
  3891. function OleSetMenuDescriptor;          external ole32 name 'OleSetMenuDescriptor';
  3892. function OleDestroyMenuDescriptor;      external ole32 name 'OleDestroyMenuDescriptor';
  3893. function OleTranslateAccelerator;       external ole32 name 'OleTranslateAccelerator';
  3894. function OleDuplicateData;              external ole32 name 'OleDuplicateData';
  3895. function OleDraw;                       external ole32 name 'OleDraw';
  3896. function OleRun;                        external ole32 name 'OleRun';
  3897. function OleIsRunning;                  external ole32 name 'OleIsRunning';
  3898. function OleLockRunning;                external ole32 name 'OleLockRunning';
  3899. procedure ReleaseStgMedium;             external ole32 name 'ReleaseStgMedium';
  3900. function CreateOleAdviseHolder;         external ole32 name 'CreateOleAdviseHolder';
  3901. function OleCreateDefaultHandler;       external ole32 name 'OleCreateDefaultHandler';
  3902. function OleCreateEmbeddingHelper;      external ole32 name 'OleCreateEmbeddingHelper';
  3903. function IsAccelerator;                 external ole32 name 'IsAccelerator';
  3904. function OleGetIconOfFile;              external ole32 name 'OleGetIconOfFile';
  3905. function OleGetIconOfClass;             external ole32 name 'OleGetIconOfClass';
  3906. function OleMetafilePictFromIconAndLabel; external ole32 name 'OleMetafilePictFromIconAndLabel';
  3907. function OleRegGetUserType;             external ole32 name 'OleRegGetUserType';
  3908. function OleRegGetMiscStatus;           external ole32 name 'OleRegGetMiscStatus';
  3909. function OleRegEnumFormatEtc;           external ole32 name 'OleRegEnumFormatEtc';
  3910. function OleRegEnumVerbs;               external ole32 name 'OleRegEnumVerbs';
  3911. function OleConvertIStorageToOLESTREAM; external ole32 name 'OleConvertIStorageToOLESTREAM';
  3912. function OleConvertOLESTREAMToIStorage; external ole32 name 'OleConvertOLESTREAMToIStorage';
  3913. function OleConvertIStorageToOLESTREAMEx; external ole32 name 'OleConvertIStorageToOLESTREAMEx';
  3914. function OleConvertOLESTREAMToIStorageEx; external ole32 name 'OleConvertOLESTREAMToIStorageEx';
  3915. function GetHGlobalFromILockBytes;      external ole32 name 'GetHGlobalFromILockBytes';
  3916. function CreateILockBytesOnHGlobal;     external ole32 name 'CreateILockBytesOnHGlobal';
  3917. function GetHGlobalFromStream;          external ole32 name 'GetHGlobalFromStream';
  3918. function CreateStreamOnHGlobal;         external ole32 name 'CreateStreamOnHGlobal';
  3919. function OleDoAutoConvert;              external ole32 name 'OleDoAutoConvert';
  3920. function OleGetAutoConvert;             external ole32 name 'OleGetAutoConvert';
  3921. function OleSetAutoConvert;             external ole32 name 'OleSetAutoConvert';
  3922. function GetConvertStg;                 external ole32 name 'GetConvertStg';
  3923. function SetConvertStg;                 external ole32 name 'SetConvertStg';
  3924.  
  3925. { Externals from oleaut32.dll }
  3926.  
  3927. function SysAllocString;                external oleaut32 name 'SysAllocString';
  3928. function SysReAllocString;              external oleaut32 name 'SysReAllocString';
  3929. function SysAllocStringLen;             external oleaut32 name 'SysAllocStringLen';
  3930. function SysReAllocStringLen;           external oleaut32 name 'SysReAllocStringLen';
  3931. procedure SysFreeString;                external oleaut32 name 'SysFreeString';
  3932. function SysStringLen;                  external oleaut32 name 'SysStringLen';
  3933. function SysStringByteLen;              external oleaut32 name 'SysStringByteLen';
  3934. function SysAllocStringByteLen;         external oleaut32 name 'SysAllocStringByteLen';
  3935. function DosDateTimeToVariantTime;      external oleaut32 name 'DosDateTimeToVariantTime';
  3936. function VariantTimeToDosDateTime;      external oleaut32 name 'VariantTimeToDosDateTime';
  3937. function SystemTimeToVariantTime;       external oleaut32 name 'SystemTimeToVariantTime';
  3938. function VariantTimeToSystemTime;       external oleaut32 name 'VariantTimeToSystemTime';
  3939. function SafeArrayAllocDescriptor;      external oleaut32 name 'SafeArrayAllocDescriptor';
  3940. function SafeArrayAllocData;            external oleaut32 name 'SafeArrayAllocData';
  3941. function SafeArrayCreate;               external oleaut32 name 'SafeArrayCreate';
  3942. function SafeArrayCreateVector;         external oleaut32 name 'SafeArrayCreateVector';
  3943. function SafeArrayCopyData;             external oleaut32 name 'SafeArrayCopyData';
  3944. function SafeArrayDestroyDescriptor;    external oleaut32 name 'SafeArrayDestroyDescriptor';
  3945. function SafeArrayDestroyData;          external oleaut32 name 'SafeArrayDestroyData';
  3946. function SafeArrayDestroy;              external oleaut32 name 'SafeArrayDestroy';
  3947. function SafeArrayRedim;                external oleaut32 name 'SafeArrayRedim';
  3948. function SafeArrayGetDim;               external oleaut32 name 'SafeArrayGetDim';
  3949. function SafeArrayGetElemsize;          external oleaut32 name 'SafeArrayGetElemsize';
  3950. function SafeArrayGetUBound;            external oleaut32 name 'SafeArrayGetUBound';
  3951. function SafeArrayGetLBound;            external oleaut32 name 'SafeArrayGetLBound';
  3952. function SafeArrayLock;                 external oleaut32 name 'SafeArrayLock';
  3953. function SafeArrayUnlock;               external oleaut32 name 'SafeArrayUnlock';
  3954. function SafeArrayAccessData;           external oleaut32 name 'SafeArrayAccessData';
  3955. function SafeArrayUnaccessData;         external oleaut32 name 'SafeArrayUnaccessData';
  3956. function SafeArrayGetElement;           external oleaut32 name 'SafeArrayGetElement';
  3957. function SafeArrayPutElement;           external oleaut32 name 'SafeArrayPutElement';
  3958. function SafeArrayCopy;                 external oleaut32 name 'SafeArrayCopy';
  3959. function SafeArrayPtrOfIndex;           external oleaut32 name 'SafeArrayPtrOfIndex';
  3960. procedure VariantInit;                  external oleaut32 name 'VariantInit';
  3961. function VariantClear;                  external oleaut32 name 'VariantClear';
  3962. function VariantCopy;                   external oleaut32 name 'VariantCopy';
  3963. function VariantCopyInd;                external oleaut32 name 'VariantCopyInd';
  3964. function VariantChangeType;             external oleaut32 name 'VariantChangeType';
  3965. function VariantChangeTypeEx;           external oleaut32 name 'VariantChangeTypeEx';
  3966. function VectorFromBstr;                external oleaut32 name 'VectorFromBstr';
  3967. function BstrFromVector;                external oleaut32 name 'BstrFromVector';
  3968. function VarUI1FromI2;                  external oleaut32 name 'VarUI1FromI2';
  3969. function VarUI1FromI4;                  external oleaut32 name 'VarUI1FromI4';
  3970. function VarUI1FromR4;                  external oleaut32 name 'VarUI1FromR4';
  3971. function VarUI1FromR8;                  external oleaut32 name 'VarUI1FromR8';
  3972. function VarUI1FromCy;                  external oleaut32 name 'VarUI1FromCy';
  3973. function VarUI1FromDate;                external oleaut32 name 'VarUI1FromDate';
  3974. function VarUI1FromStr;                 external oleaut32 name 'VarUI1FromStr';
  3975. function VarUI1FromDisp;                external oleaut32 name 'VarUI1FromDisp';
  3976. function VarUI1FromBool;                external oleaut32 name 'VarUI1FromBool';
  3977. function VarUI1FromI1;                  external oleaut32 name 'VarUI1FromI1';
  3978. function VarUI1FromUI2;                 external oleaut32 name 'VarUI1FromUI2';
  3979. function VarUI1FromUI4;                 external oleaut32 name 'VarUI1FromUI4';
  3980. function VarUI1FromDec;                 external oleaut32 name 'VarUI1FromDec';
  3981. function VarI2FromUI1;                  external oleaut32 name 'VarI2FromUI1';
  3982. function VarI2FromI4;                   external oleaut32 name 'VarI2FromI4';
  3983. function VarI2FromR4;                   external oleaut32 name 'VarI2FromR4';
  3984. function VarI2FromR8;                   external oleaut32 name 'VarI2FromR8';
  3985. function VarI2FromCy;                   external oleaut32 name 'VarI2FromCy';
  3986. function VarI2FromDate;                 external oleaut32 name 'VarI2FromDate';
  3987. function VarI2FromStr;                  external oleaut32 name 'VarI2FromStr';
  3988. function VarI2FromDisp;                 external oleaut32 name 'VarI2FromDisp';
  3989. function VarI2FromBool;                 external oleaut32 name 'VarI2FromBool';
  3990. function VarI2FromI1;                   external oleaut32 name 'VarI2FromI1';
  3991. function VarI2FromUI2;                  external oleaut32 name 'VarI2FromUI2';
  3992. function VarI2FromUI4;                  external oleaut32 name 'VarI2FromUI4';
  3993. function VarI2FromDec;                  external oleaut32 name 'VarI2FromDec';
  3994. function VarI4FromUI1;                  external oleaut32 name 'VarI4FromUI1';
  3995. function VarI4FromI2;                   external oleaut32 name 'VarI4FromI2';
  3996. function VarI4FromR4;                   external oleaut32 name 'VarI4FromR4';
  3997. function VarI4FromR8;                   external oleaut32 name 'VarI4FromR8';
  3998. function VarI4FromCy;                   external oleaut32 name 'VarI4FromCy';
  3999. function VarI4FromDate;                 external oleaut32 name 'VarI4FromDate';
  4000. function VarI4FromStr;                  external oleaut32 name 'VarI4FromStr';
  4001. function VarI4FromDisp;                 external oleaut32 name 'VarI4FromDisp';
  4002. function VarI4FromBool;                 external oleaut32 name 'VarI4FromBool';
  4003. function VarI4FromI1;                   external oleaut32 name 'VarI4FromI1';
  4004. function VarI4FromUI2;                  external oleaut32 name 'VarI4FromUI2';
  4005. function VarI4FromUI4;                  external oleaut32 name 'VarI4FromUI4';
  4006. function VarI4FromDec;                  external oleaut32 name 'VarI4FromDec';
  4007. function VarI4FromInt;                  external oleaut32 name 'VarI4FromInt';
  4008. function VarR4FromUI1;                  external oleaut32 name 'VarR4FromUI1';
  4009. function VarR4FromI2;                   external oleaut32 name 'VarR4FromI2';
  4010. function VarR4FromI4;                   external oleaut32 name 'VarR4FromI4';
  4011. function VarR4FromR8;                   external oleaut32 name 'VarR4FromR8';
  4012. function VarR4FromCy;                   external oleaut32 name 'VarR4FromCy';
  4013. function VarR4FromDate;                 external oleaut32 name 'VarR4FromDate';
  4014. function VarR4FromStr;                  external oleaut32 name 'VarR4FromStr';
  4015. function VarR4FromDisp;                 external oleaut32 name 'VarR4FromDisp';
  4016. function VarR4FromBool;                 external oleaut32 name 'VarR4FromBool';
  4017. function VarR4FromI1;                   external oleaut32 name 'VarR4FromI1';
  4018. function VarR4FromUI2;                  external oleaut32 name 'VarR4FromUI2';
  4019. function VarR4FromUI4;                  external oleaut32 name 'VarR4FromUI4';
  4020. function VarR4FromDec;                  external oleaut32 name 'VarR4FromDec';
  4021. function VarR8FromUI1;                  external oleaut32 name 'VarR8FromUI1';
  4022. function VarR8FromI2;                   external oleaut32 name 'VarR8FromI2';
  4023. function VarR8FromI4;                   external oleaut32 name 'VarR8FromI4';
  4024. function VarR8FromR4;                   external oleaut32 name 'VarR8FromR4';
  4025. function VarR8FromCy;                   external oleaut32 name 'VarR8FromCy';
  4026. function VarR8FromDate;                 external oleaut32 name 'VarR8FromDate';
  4027. function VarR8FromStr;                  external oleaut32 name 'VarR8FromStr';
  4028. function VarR8FromDisp;                 external oleaut32 name 'VarR8FromDisp';
  4029. function VarR8FromBool;                 external oleaut32 name 'VarR8FromBool';
  4030. function VarR8FromI1;                   external oleaut32 name 'VarR8FromI1';
  4031. function VarR8FromUI2;                  external oleaut32 name 'VarR8FromUI2';
  4032. function VarR8FromUI4;                  external oleaut32 name 'VarR8FromUI4';
  4033. function VarR8FromDec;                  external oleaut32 name 'VarR8FromDec';
  4034. function VarDateFromUI1;                external oleaut32 name 'VarDateFromUI1';
  4035. function VarDateFromI2;                 external oleaut32 name 'VarDateFromI2';
  4036. function VarDateFromI4;                 external oleaut32 name 'VarDateFromI4';
  4037. function VarDateFromR4;                 external oleaut32 name 'VarDateFromR4';
  4038. function VarDateFromR8;                 external oleaut32 name 'VarDateFromR8';
  4039. function VarDateFromCy;                 external oleaut32 name 'VarDateFromCy';
  4040. function VarDateFromStr;                external oleaut32 name 'VarDateFromStr';
  4041. function VarDateFromDisp;               external oleaut32 name 'VarDateFromDisp';
  4042. function VarDateFromBool;               external oleaut32 name 'VarDateFromBool';
  4043. function VarDateFromI1;                 external oleaut32 name 'VarDateFromI1';
  4044. function VarDateFromUI2;                external oleaut32 name 'VarDateFromUI2';
  4045. function VarDateFromUI4;                external oleaut32 name 'VarDateFromUI4';
  4046. function VarDateFromDec;                external oleaut32 name 'VarDateFromDec';
  4047. function VarCyFromUI1;                  external oleaut32 name 'VarCyFromUI1';
  4048. function VarCyFromI2;                   external oleaut32 name 'VarCyFromI2';
  4049. function VarCyFromI4;                   external oleaut32 name 'VarCyFromI4';
  4050. function VarCyFromR4;                   external oleaut32 name 'VarCyFromR4';
  4051. function VarCyFromR8;                   external oleaut32 name 'VarCyFromR8';
  4052. function VarCyFromDate;                 external oleaut32 name 'VarCyFromDate';
  4053. function VarCyFromStr;                  external oleaut32 name 'VarCyFromStr';
  4054. function VarCyFromDisp;                 external oleaut32 name 'VarCyFromDisp';
  4055. function VarCyFromBool;                 external oleaut32 name 'VarCyFromBool';
  4056. function VarCyFromI1;                   external oleaut32 name 'VarCyFromI1';
  4057. function VarCyFromUI2;                  external oleaut32 name 'VarCyFromUI2';
  4058. function VarCyFromUI4;                  external oleaut32 name 'VarCyFromUI4';
  4059. function VarCyFromDec;                  external oleaut32 name 'VarCyFromDec';
  4060. function VarBStrFromUI1;                external oleaut32 name 'VarBStrFromUI1';
  4061. function VarBStrFromI2;                 external oleaut32 name 'VarBStrFromI2';
  4062. function VarBStrFromI4;                 external oleaut32 name 'VarBStrFromI4';
  4063. function VarBStrFromR4;                 external oleaut32 name 'VarBStrFromR4';
  4064. function VarBStrFromR8;                 external oleaut32 name 'VarBStrFromR8';
  4065. function VarBStrFromCy;                 external oleaut32 name 'VarBStrFromCy';
  4066. function VarBStrFromDate;               external oleaut32 name 'VarBStrFromDate';
  4067. function VarBStrFromDisp;               external oleaut32 name 'VarBStrFromDisp';
  4068. function VarBStrFromBool;               external oleaut32 name 'VarBStrFromBool';
  4069. function VarBstrFromI1;                 external oleaut32 name 'VarBstrFromI1';
  4070. function VarBstrFromUI2;                external oleaut32 name 'VarBstrFromUI2';
  4071. function VarBstrFromUI4;                external oleaut32 name 'VarBstrFromUI4';
  4072. function VarBstrFromDec;                external oleaut32 name 'VarBstrFromDec';
  4073. function VarBoolFromUI1;                external oleaut32 name 'VarBoolFromUI1';
  4074. function VarBoolFromI2;                 external oleaut32 name 'VarBoolFromI2';
  4075. function VarBoolFromI4;                 external oleaut32 name 'VarBoolFromI4';
  4076. function VarBoolFromR4;                 external oleaut32 name 'VarBoolFromR4';
  4077. function VarBoolFromR8;                 external oleaut32 name 'VarBoolFromR8';
  4078. function VarBoolFromDate;               external oleaut32 name 'VarBoolFromDate';
  4079. function VarBoolFromCy;                 external oleaut32 name 'VarBoolFromCy';
  4080. function VarBoolFromStr;                external oleaut32 name 'VarBoolFromStr';
  4081. function VarBoolFromDisp;               external oleaut32 name 'VarBoolFromDisp';
  4082. function VarBoolFromI1;                 external oleaut32 name 'VarBoolFromI1';
  4083. function VarBoolFromUI2;                external oleaut32 name 'VarBoolFromUI2';
  4084. function VarBoolFromUI4;                external oleaut32 name 'VarBoolFromUI4';
  4085. function VarBoolFromDec;                external oleaut32 name 'VarBoolFromDec';
  4086. function LHashValOfNameSys;             external oleaut32 name 'LHashValOfNameSys';
  4087. function LHashValOfNameSysA;            external oleaut32 name 'LHashValOfNameSysA';
  4088. function LoadTypeLib;                   external oleaut32 name 'LoadTypeLib';
  4089. function LoadTypeLibEx;                 external oleaut32 name 'LoadTypeLibEx';
  4090. function LoadRegTypeLib;                external oleaut32 name 'LoadRegTypeLib';
  4091. function QueryPathOfRegTypeLib;         external oleaut32 name 'QueryPathOfRegTypeLib';
  4092. function RegisterTypeLib;               external oleaut32 name 'RegisterTypeLib';
  4093. function UnRegisterTypeLib;             external oleaut32 name 'UnRegisterTypeLib';
  4094. function CreateTypeLib;                 external oleaut32 name 'CreateTypeLib';
  4095. function CreateTypeLib2;                external oleaut32 name 'CreateTypeLib2';
  4096. function DispGetParam;                  external oleaut32 name 'DispGetParam';
  4097. function DispGetIDsOfNames;             external oleaut32 name 'DispGetIDsOfNames';
  4098. function DispInvoke;                    external oleaut32 name 'DispInvoke';
  4099. function CreateDispTypeInfo;            external oleaut32 name 'CreateDispTypeInfo';
  4100. function CreateStdDispatch;             external oleaut32 name 'CreateStdDispatch';
  4101. function DispCallFunc;                  external oleaut32 name 'DispCallFunc';
  4102. function RegisterActiveObject;          external oleaut32 name 'RegisterActiveObject';
  4103. function RevokeActiveObject;            external oleaut32 name 'RevokeActiveObject';
  4104. function GetActiveObject;               external oleaut32 name 'GetActiveObject';
  4105. function SetErrorInfo;                  external oleaut32 name 'SetErrorInfo';
  4106. function GetErrorInfo;                  external oleaut32 name 'GetErrorInfo';
  4107. function CreateErrorInfo;               external oleaut32 name 'CreateErrorInfo';
  4108. function OaBuildVersion;                external oleaut32 name 'OaBuildVersion';
  4109.  
  4110. { Externals from olepro32.dll }
  4111.  
  4112. function OleCreatePropertyFrame;        external olepro32 name 'OleCreatePropertyFrame';
  4113. function OleCreatePropertyFrameIndirect; external olepro32 name 'OleCreatePropertyFrameIndirect';
  4114. function OleTranslateColor;             external olepro32 name 'OleTranslateColor';
  4115. function OleCreateFontIndirect;         external olepro32 name 'OleCreateFontIndirect';
  4116. function OleCreatePictureIndirect;      external olepro32 name 'OleCreatePictureIndirect';
  4117. function OleLoadPicture;                external olepro32 name 'OleLoadPicture';
  4118. function OleLoadPicturePath;            external olepro32 name 'OleLoadPicturePath';
  4119. function OleLoadPictureFile;            external olepro32 name 'OleLoadPictureFile';
  4120. function OleSavePictureFile;            external olepro32 name 'OleSavePictureFile';
  4121. function OleIconToCursor;               external olepro32 name 'OleIconToCursor';
  4122.  
  4123. { Helper functions }
  4124.  
  4125. function Succeeded(Res: HResult): Boolean;
  4126. begin
  4127.   Result := Res >= 0;
  4128. end;
  4129.  
  4130. function Failed(Res: HResult): Boolean;
  4131. begin
  4132.   Result := Res < 0;
  4133. end;
  4134.  
  4135. function ResultCode(Res: HResult): Integer;
  4136. begin
  4137.   Result := Res and $0000FFFF;
  4138. end;
  4139.  
  4140. function ResultFacility(Res: HResult): Integer;
  4141. begin
  4142.   Result := (Res shr 16) and $00001FFF;
  4143. end;
  4144.  
  4145. function ResultSeverity(Res: HResult): Integer;
  4146. begin
  4147.   Result := Res shr 31;
  4148. end;
  4149.  
  4150. function MakeResult(Severity, Facility, Code: Integer): HResult;
  4151. begin
  4152.   Result := (Severity shl 31) or (Facility shl 16) or Code;
  4153. end;
  4154.  
  4155. function LHashValOfName(lcid: TLCID; szName: POleStr): Longint;
  4156. begin
  4157.   Result := LHashValOfNameSys(SYS_WIN32, lcid, szName);
  4158. end;
  4159.  
  4160. function WHashValOfLHashVal(lhashval: Longint): Word;
  4161. begin
  4162.   Result := lhashval and $0000FFFF;
  4163. end;
  4164.  
  4165. function IsHashValCompatible(lhashval1, lhashval2: Longint): Boolean;
  4166. begin
  4167.   Result := lhashval1 and $00FF0000 = lhashval2 and $00FF0000;
  4168. end;
  4169.  
  4170. end.
  4171.